Survarium, model exporting

Skeletons, animations, shaders, texturing, converting, fixing and anything else related to read game models
Sundog1337
Posts: 2
Joined: Sat Feb 19, 2022 9:04 pm

Survarium, model exporting

Post by Sundog1337 »

Having issues converting this backpack to something usable like obj or nif. I've looked up several tutorials on hex offsets but can't seem to either find one that makes sense, or is accurate to how to export survarium models, or find their offsets. I've been over to the thread on xentax and most of the links are broken. The link to "vetool.exe" which sound like my best bet is broken, and so far I haven't gotten any responses from members over there. I am able to show vertices in model researcher(pictured) but cannot find the faces offset, or it doesn't exist in the file, they also come with a "export_properties" file, but I have yet to find any useful information in those either. I also tried using ninja ripper and the games anticheat put a stop to that. I'm willing to try and learn but I've gone a few months with no success, if someone could either point me to a proper tutorial, walk me through how to do it, or just do it for me I'd appreciate it. I'm using it to make a story mod in FNV. Computers are frustrating lol.

https://www.mediafire.com/file/ooowrw1i ... k.zip/file

soldiersbackpackvertices2.jpg
DJ Normality
Posts: 647
Joined: Tue Jul 24, 2018 8:52 am

Re: Survarium, model exporting

Post by DJ Normality »

From your samples
Image
Sundog1337
Posts: 2
Joined: Sat Feb 19, 2022 9:04 pm

Re: Survarium, model exporting

Post by Sundog1337 »

DJ Normality wrote:From your samples
Image

You're my hero :D
Now I just need to fix this texture issue and I'll be good to go, it never ends lol :roll:

EDIT: UV was flipped on X axis in Model Researcher, flipped it and itworked. Did the same thing in nifskope on the "T" axis and it fixed the issue entirely. Thanks again for your help, if you could show me how to do this on my own in the future I'd really appreciate it, but couldn't have done this without you, last pic is screenshot of it in game :D

scoutbagtextureerror.jpg


scoutbagtextureerror2.jpg


20220220044713_1.jpg
Last edited by Sundog1337 on Sun Feb 20, 2022 10:56 am, edited 1 time in total.
DJ Normality
Posts: 647
Joined: Tue Jul 24, 2018 8:52 am

Re: Survarium, model exporting

Post by DJ Normality »

Flip uv's
h3x3r
Posts: 165
Joined: Wed Jun 01, 2016 5:53 pm

Re: Survarium, model exporting

Post by h3x3r »

Or you can try my template for 010 Hex Editor which print model data to *.obj file. Should work on most of formats. Hope they doesn't change model struct. Doesn't support normals. I don't know how to process them.
Just open "converted_model" in 010 Hex editor and run tamplate on it.

Code: Select all

//--------------------------------------
//--- 010 Editor v6.0.3 Binary Template
//
// File:
// Author:
// Revision:
// Purpose:
//--------------------------------------
//Survarium converted_model
//BigEndian();
local int i, FVFSize, index;
local string s0,s1,s2,s3,s4,filename;

s0="v";
s1="vn";
s2="vt";
s3="f";
s4="";

int vertID;
int VBSize;
int VertexCount;
FVFSize=VBSize/VertexCount;

struct VTXBLOCK {
if (FVFSize==40) {
for (i=0;i<VertexCount;i++)
struct VT_0{
        float VTX;
        float VTY;
        float VTZ;
        Printf("%s %f %f %f\n", s0, VTX*100, VTY*100, -VTZ*100);
struct VN_0 {
        float VNX;
        float VNY;
        float VNZ;
        float UNK;
        float UNK0;
        float UNK1;
//        Printf("%s %f %f %f\n", s1, VNX, VNY, VNZ);
struct UV_0 {
        hfloat VTU;
        hfloat VTV;
        Printf("%s %f %f\n", s2, VTU, -VTV+1);
            }uv_0;
        }vn_0;
    }vt_0;
}
else if (FVFSize==36) {
for (i=0;i<VertexCount;i++)
struct VT_1 {
        float VTX;
        float VTY;
        float VTZ;
        Printf("%s %f %f %f\n", s0, VTX*100, VTY*100, -VTZ*100);
struct VN_1 {
        float VNX;
        float VNY;
        float VNZ;
        float UNK;
        float UNK0;
//        Printf("%s %f %f %f\n", s1, VNX, VNY, VNZ);
struct UV_1 {
        hfloat VTU;
        hfloat VTV;
        Printf("%s %f %f\n", s2, VTU, -VTV+1);
            }uv_1;
        }vn_1;
    }vt_1;
}
else if (FVFSize==32) {
for (i=0;i<VertexCount;i++)
struct VT_2 {
        float VTX;
        float VTY;
        float VTZ;
        Printf("%s %f %f %f\n", s0, VTX*100, VTY*100, -VTZ*100);
struct VN_2 {
        float VNX;
        float VNY;
        float VNZ;
        float UNK;
//        Printf("%s %f %f %f\n", s1, VNX, VNY, VNZ);
struct UV_2 {
        hfloat VTU;
        hfloat VTV;
        Printf("%s %f %f\n", s2, VTU, -VTV+1);
            }uv_2;
        }vn_2;
    }vt_2;
}
else if (FVFSize==28) {
for (i=0;i<VertexCount;i++)
struct VT_3 {
        float VTX;
        float VTY;
        float VTZ;
        Printf("%s %f %f %f\n", s0, VTX*100, VTY*100, -VTZ*100);
struct VN_3 {
        float VNX;
        float VNY;
        float VNZ;
//        Printf("%s %f %f %f\n", s1, VNX, VNY, VNZ);
struct UV_3 {
        hfloat VTU;
        hfloat VTV;
        Printf("%s %f %f\n", s2, VTU, -VTV+1);
            }uv_3;
        }vn_3;
    }vt_3;
}
else
for (i=0;i<VertexCount;i++)
struct VT_4 {
        float VTX;
        float VTY;
        float VTZ;
        Printf("%s %f %f %f\n", s0, VTX*100, VTY*100, -VTZ*100);
struct VN_4 {
        hfloat VNX;
        hfloat VNY;
        hfloat VNZ;
        hfloat VNW;
//        Printf("%s %f %f %f\n", s1, VNX, VNY, VNZ);
struct UV_4 {
        hfloat VTU;
        hfloat VTV;
        Printf("%s %f %f\n", s2, VTU, -VTV+1);
            }uv_4;
        }vn_4;
    }vt_4;
}vtxblock;

int IndexID;
index=IndexID;
if (index==5) {
struct BONES {
    int BoneCount;
struct Index {
    ubyte idx[BoneCount];
    int unk0;
    int blocksize;
    ubyte block[blocksize];   
    }idx;
}bones;

struct FACEINDICES_0 {
        int IndexID;
        int FBSize;
        int FICount;
for (i=0;i<FICount/3;i++)
struct INDICES_0 {
        ushort FX;
        ushort FY;
        ushort FZ;
//        Printf("%s %u/%u/%u %u/%u/%u %u/%u/%u\n", s3, FX+1,FX+1,FX+1, FY+1,FY+1,FY+1, FZ+1,FZ+1,FZ+1); //normal
        Printf("%s %u/%u/%u %u/%u/%u %u/%u/%u\n", s3, FZ+1,FZ+1,FZ+1, FY+1,FY+1,FY+1, FX+1,FX+1,FX+1); //-
    }fi_0;
}fb_0;
}
else
struct FACEINDICES_1 {
        int FBSize;
        int FICount;
for (i=0;i<FICount/3;i++)
struct INDICES_1 {
        ushort FX;
        ushort FY;
        ushort FZ;
//        Printf("%s %u/%u/%u %u/%u/%u %u/%u/%u\n", s3, FX+1,FX+1,FX+1, FY+1,FY+1,FY+1, FZ+1,FZ+1,FZ+1); //normal
        Printf("%s %u/%u/%u %u/%u/%u %u/%u/%u\n", s3, FZ+1,FZ+1,FZ+1, FY+1,FY+1,FY+1, FX+1,FX+1,FX+1); //-
    }fi_1;
}fb_1;
int next;
filename=GetFileName();
OutputPaneSave(filename+".obj");
DJ Normality
Posts: 647
Joined: Tue Jul 24, 2018 8:52 am

Re: Survarium, model exporting

Post by DJ Normality »

You can learn simple stuff like this in my server i sent you a link. ;)

@h3x3r thanks for the 010 template i dont have that unfortunately. but glad to see you around still. thanks for all your help.