Wish to contribute to the project by donating? Heads up to our Patreon -> https://www.patreon.com/skylordsreborn

Jump to content
BEWARE: Multiaccounting Will Cause Permabans! Read more... ×
onedaxter

Export 3D Model / 3D Model Format

Recommended Posts

@Kiliangg What's your pc's specs?

 

 

  • Intel i5 760 OC @ 4GHz
  • Asus P7H55-M
  • Cosair XMS3 2x4GB RAM(Used to be 4x but the 2 other wont work properly [Upgrade soon])
  • ASUS Nvidea GTX 770
  • Hard Drive Stuff
Edited by Kiliangg

Share this post


Link to post
Share on other sites

My Problem right now that i cant add the original Animations and most of the models are one big model and not Sperated in f.E. Legs, Hands, etc.. so I have edit the hole models without making them look like garbage ^^ anyone got options? or do I have to put in serious work ? xD

Share this post


Link to post
Share on other sites

@Kiliangg well i dont know much about that actually... if you can tell me how to do it then we can just split the work too

Select Polygons for a body part, create a Object and export this. In theory it works I did not try yet...

Share this post


Link to post
Share on other sites

well i tried to add bones to the model to give it certain postures... i kinda did something but adding bones is really hard lolunit_twilight_unstable_demon.png

Was also able to add a floor with the forge texture (i think) + some lighting effects

img.jpg

img4.jpg

img2.jpg

Edited by HomieGoHome

Share this post


Link to post
Share on other sites

im using c4d. load the obj, create new material, with the png as colour.

another question: what are these blue png's for? how do i use them?

Share this post


Link to post
Share on other sites

im using c4d. load the obj, create new material, with the png as colour.

another question: what are these blue png's for? how do i use them?

you mean normals?

works like texture in the material in C4D

Edited by Kiliangg

Share this post


Link to post
Share on other sites

alright Ill search around...

 

EDIT: I found the error. Works now. Thanks @Pesmontis for this usefull Programm !

would you be so kind to post the solution?^^

got the same error when i try to open eg the spitfire

Share this post


Link to post
Share on other sites

would you be so kind to post the solution?^^

got the same error when i try to open eg the spitfire

I just dragged the 0.5.exe in the Installation Folder of LightSong v0.4b and boom. it works^^

Share this post


Link to post
Share on other sites

Excellent, it loads perfectly now. UVW's are wrong for 3DS Max, and need to be moved upward in UVW edit. Bones aren't imported, but that's fixable too. -par suffix images are for particles and glow if anyone is wondering.

zSnw3iY.png

Share this post


Link to post
Share on other sites

Hey guys

I would really like to use the models for the development contest but I have a problem with installing LightSong v0.4. It only gives me the option to exit the setup.

Is there maybe an alternative for getting the models?

 

Share this post


Link to post
Share on other sites
On 23.6.2016 at 8:33 PM, Darian DelFord said:

I am experiencing the same error.  Could you share on how you fixed it?

 

On 20.9.2015 at 9:21 PM, Kiliangg said:

I just dragged the 0.5.exe in the Installation Folder of LightSong v0.4b and boom. it works^^

 

Share this post


Link to post
Share on other sites
5 hours ago, bobfrog said:

 

 

 

I did that already and am still getting the same error

 

 

 

 

EDIT:::::::::::::::::::::::::::::::::::::::::::::::::::::

 

 

 

Oh I ee what your talking about, now getting another error, let me record so you can see it

Here is the error I am now getting

 

 

 

Share this post


Link to post
Share on other sites

Hey guys, I thought I'd give you guys a hand, this is the structure of the SKA file. Many unknowns ofc. Did not have the time to take a look at those ;)

char Magic[4]; //0xA7148107

uint Type;

if (Type < 2 || Type > 7)
    return;

int Length;
struct _Headers
{
    uint Unknown1;
    uint Unknown2;
    uint Unknown3;
    uint Unknown4;
} Headers[Length];

int Length6;
uint Unknown1[Length6];

struct _Unknown2
{
    uint Unknown1;
    uint Unknown2;
    uint Unknown3;
    uint Unknown4;
    uint Unknown5;
    uint Unknown6;
    uint Unknown7;
    uint Unknown8;
} Unknown2[Length6];

if (Type == 2)
{
    int Unknown1;
}
else if (Type == 3)
{
    int Unknown2;
    int Unknown3;
}
else if (Type == 4)
{
    int Unknown3;
    int Unknown4;
    int Unknown5;
    int Unknown6;
}
else if (Type == 5)
{
    int Unknown3;
    int Unknown4;
    int Unknown5;
    int Unknown6;  

    int Length3;
    int Unknown6[Length3];  
}
else if (Type == 6)
{
    int Unknown3;
    int Unknown4;
    int Unknown5;
}
else if (Type == 7)
{
    int Unknown1;
    int Unknown2;
    int Unknown3;
    int Unknown4;
    int Unknown5;
    
    int Length3;
    int Unknown6[Length3];

    int Length4;
    long Unknown7[Length4];

    int Length5;
    byte Unknown8[Length5];
}

 

Share this post


Link to post
Share on other sites

Hereby also the DRS file format. File formats for the classes will follow.

//Definitions
struct CString
{
    int Length;
    char Text[Length];
};

//Structure
char Magic[4]; //0xC57CF11E
int ChunkFileVersion; //Must be 1

int NodeInformationOffset; //Offset to node information?
int NodeHierarchyOffset; //Offset to node names?
uint NodeCount; //Node count

if (NodeCount != 0)
{
    FSeek(NodeInformationOffset);

    struct _NodeInformation
    {
        uint Checksum <format=hex>; //CRC32 probably
        int Identifier;
        int Offset;
        int Size;
    } NodeInformation[NodeCount];

    FSeek(NodeHierarchyOffset);

    local int nodeCount = 0;

    struct Node
    {
        int Identifier;

        struct _NodeData(int child)
        {
            CString Name;
            int ChildCount;
            if (child == 1 && ChildCount > 0)
            {
                MessageBox(idOk, "Error", "Recursive node layout not yet supported");
                return;
            }

            nodeCount = nodeCount + 1;
        } Parent(0);

        if (Parent.ChildCount > 0)
            _NodeData Children(1)[Parent.ChildCount] <optimize=false>;
    };

    int Unknown;

    while (nodeCount < NodeCount)
        Node Nodes <optimize=false>;

    local int i;
    for (i = 0; i < NodeCount; i++)
    {
        FSeek(NodeInformation[i].Offset);
        if (NodeInformation[i].Size > 0)
        {
            struct _Section
            {
                byte Data[NodeInformation[i].Size];
            } Section <optimize=false>;
        }
    }

}

 

Share this post


Link to post
Share on other sites

Here's CGeoMesh.

int Version;
int Length;

if (Length > 0)
    short Indices[Length]; //Just a guess

int Length2;

if (Length2 > 0)
{
    struct _Points
    {
        float Unknown1; //X
        float Unknown2; //Y
        float Unknown3; //Z
        float Unknown4; //Direction?
    } Points[Length2];
}

 

Share this post


Link to post
Share on other sites

Going to necro this thread, here's a 010 editor script, have an update for the DRS structure, currently stuck at CDspMeshFile, will continue work tomorrow. Thanks Pesmontis for some documentation.

//Definitions
struct CString
{
    int Length;
    char Text[Length];
};

struct Point
{
    float X;
    float Y;
    float Z;
};

struct CGeoMesh
{
    int Version;
    int IndexCount;
    
    if (IndexCount > 0)
        short Indices[IndexCount]; //Just a guess
    
    int VertexCount;
    
    if (VertexCount > 0)
    {
        struct _Vertices
        {
            float X; //X
            float Y; //Y
            float Z; //Z
            float W; //Direction?
        } Vertices[VertexCount];
    }
};

struct CSkSkinInfo
{
    int Version;
    int VertexCount;

    struct _VertexWeight
    {
        float Weights[4];
        int BoneIndices[4];
    } VertexWeights[VertexCount];
};

struct CDspMeshFile
{
    int Version;
    int Unknown1;
    int MeshCount;
    Point BoundingBoxLowerLeftCorner1;
    Point BoundingBoxUpperRightCorner1;

    //float Unknown2[12];

    int VertexCount;
    int FaceCount;

    struct Face
    {
        int16 Indices[3];
    } Faces[FaceCount];

    byte VertexFVF[5];

    int GeometryVertexSize;
    
    struct GeometryVertex
    {
        Point Position;
        Point Normal;
        //byte Normall24[4];
        
        struct _TextureCoordinate
        {
            float U;
            float V;
        } TextureCoordinate;

        //int BoneCount;
    } GeometryVertices[VertexCount];

    //Point BoundingBoxLowerLeftCorner2;
    //Point BoundingBoxUpperRightCorner2;
    //float unknown01;                // value = -8.884623E+09;
    
    /*struct _Textures
    {
        byte Magic[2];
        int Unknown;
        struct _TextureSet
        {
            int TextureCount;
            char Identifier[4];
            CString Name;
            float unknown;       // array size unknown (!): cause of sync. errors.
                                            //  usually just one float, but irregularities here
                                            //   have given cause to hardcoded exceptions
                                            //    (eg. building_beast_altar_main.drs);
        } TextureSet;
    } Textures;*/
};

struct CSkSkeleton
{
    int Version;
    int Unknown1;

    int BoneMatrixCount;
    struct BoneMatrix
    {
        struct BoneVertex
        {
            float X;
            float Y;
            float Z;
            int ParentReference; //parentRef[0] = parent index, parentRef[1] = index into CSkSkeleton.dBone array, used in SKA
        } BoneVertices[4];
    } BoneMatrices[BoneMatrixCount];

    int BoneCount;
    struct Bone
    {
        int Version;
        
        int Identifier;
        CString Name;
    
        int ChildCount;
        if (ChildCount > 0)
            int Children[ChildCount];
    } Bones[BoneCount] <optimize=false>;

    float Unknown2[16];
};

struct CDspJointMap
{
    int Version;
    int JointGroupCount;
    
    if (JointGroupCount > 0)
    {
        struct _JointGroup
        {
            int JointCount;
            if (JointCount > 0)
                short JointIndices[JointCount];
        } JointGroups[JointGroupCount] <optimize=false>;
    }
};

//Structure
char Magic[4]; //0xC57CF11E
int NumberOfModels; //Must be 1

int NodeInformationOffset; //Offset to node information?
int NodeHierarchyOffset; //Offset to node names?
uint NodeCount; //Node count

if (NodeCount != 0)
{
    FSeek(NodeInformationOffset);

    //Always a root node with Identifier, conflicting
    struct _NodeInformation
    {
        uint Checksum <format=hex>; //CRC32 probably
        int Identifier;
        int Offset;
        int Size;
    } NodeInformation[NodeCount];

    FSeek(NodeHierarchyOffset);

    struct _RootNode
    {
        int RootIdentifier;
        int Unknown;
        CString rootName;
    } RootNode;

    local int i = 1;
    struct _Node
    {
        local int NodeIndex = i;
        int Identifier;
        CString Name;
        int Unknown; //ChildCount?

        local int j;
        local int64 oldPosition;
        for (j = NodeCount - 1; j >= 0; j--)
        {
            if (NodeInformation[j].Identifier != NodeIndex)
                continue;

            oldPosition = FTell();
            FSeek(NodeInformation[j].Offset);
            if (NodeInformation[j].Size > 0)
            {
                if (Strcmp(Name.Text, "CGeoMesh") == 0)
                    CGeoMesh Mesh;
                else if (Strcmp(Name.Text, "CDspJointMap") == 0)
                    CDspJointMap JointMap;
                else if (Strcmp(Name.Text, "CSkSkinInfo") == 0)
                    CSkSkinInfo SkinInfo;
                else if (Strcmp(Name.Text, "CSkSkeleton") == 0)
                    CSkSkeleton Skeleton;
                else if (Strcmp(Name.Text, "CDspMeshFile") == 0)
                    CDspMeshFile MeshFile;
                else
                    byte Data[NodeInformation[j].Size];
            }
            FSeek(oldPosition);
            break;
        }

        i = i + 1;
    } Nodes[NodeCount - 1] <optimize=false>;
}

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.