fodev.net

FOnline Development => 3D Development => Topic started by: Horatio on October 30, 2012, 08:17:38 pm

Title: Exports from Van Buren.
Post by: Horatio on October 30, 2012, 08:17:38 pm
I was doing some internet archaelogy to find exported materials from Van Buren, but every link i found was dead. Every request got unanswered, except from Xammurapi. (many kudos to him) so i decided to do something by myself - export it again from VB demo. The scripts i could find were for Max, this one worked almost perfectly for the VB maps.
Code: [Select]
function String4Read f = (
s = ""
for i = 1 to 4 do (
n = readbyte f
s+= bit.intAsChar n
)
return s
)

struct TSectionHeader
(
id = "", -- name
size = 0,

function ReadFromFile f =
(
id = String4Read f
size = readlong f
)
)

function ReadSectionHead f =
(
head = TSectionHeader()
head.ReadFromFile f
return head
)


GVP = #() -- vertex position
GVN = #() -- vertex normal
GVD = #() -- vertex diffuse color
GVT = #() -- texture coords
GVL = #() -- lightmap coords
IDX = #() -- face indexes

buffer_index = 0  -- current vertex buffer index
buffer_offset = #() --

Flag = 1

struct TREE_Data
(

function FileSizeGet f =
(
prev = ftell f
fseek f 0 #seek_end
size = ftell f
fseek f prev #seek_set
return size
),

function FilePosGet f =
(
ret = ftell f
return ret
),

function IsHeader s =
(
return case s of
(
"NODE" : true
"LEAF" : true
"INFO" : true
"IDXD" : true
"IDXS" : true
"FLGS" : true
"TREE" : true
"LVL0" : true
"XYZ " : true
"MATR" : true
"MATD" : true
"TXTD" : true
"TREE" : true
"VTXD" : true
"VTXB" : true
"TXUV" : true
"LMUV" : true
"DIFU" : true
"NRML" : true
"LVLD" : true
"LVL0" : true
"HEAD" : true
"8TRE" : true
"LGTD" : true
"LGTR" : true
default : false
)
),

function ReadBlock f size=
(
header = ReadSectionHead f

    if header.id == "FLGS" do
(
fseek f (header.size*Flag) #seek_cur
return 0
)

if header.id == "IDXD" do
(
fseek f -16 #seek_cur
tmp =1 + (readlong f)
if tmp >= 1 and tmp <= buffer_offset.count do
buffer_index = tmp
--format "vertex buffer : % / %" buffer_index buffer_offset.count
fseek f 12 #seek_cur
)

if header.id == "TXTR" do
(
s = ""
for i = 1 to header.size do s += (bit.IntAsChar (readbyte f) )
print s
return 0
)

if header.id == "IDXS" do
(
--print header
end = (ftell f) + header.size


while ((ftell f)+12) < end do
(
tmp = readshort f #unsigned
if tmp == 0 do
(
tmp = readshort f #unsigned
--print tmp
)

if bit.and tmp 0xFF00 == 0x8000 do fseek f 8 #seek_cur
if bit.and tmp 0xFF00 == 0x4000 do fseek f 4 #seek_cur

size = readshort f

for i = 1 to (size/3) do
(
a = buffer_offset[buffer_index] + readshort f #unsigned
b = buffer_offset[buffer_index] + readshort f #unsigned
c = buffer_offset[buffer_index] + readshort f #unsigned

IDX[IDX.count+1] = [a,c,b]
)

)

fseek f end #seek_set
return 0
)

if header.id == "VTXB" do
(
readlong f
header.size -= 4
buffer_offset[buffer_offset.count+1] = GVP.count+1
--format "vertex buffer offset % = %\n" buffer_offset.count  (GVP.count+1)
)

if header.id == "VTXD" do
(
readlong f
header.size -= 4
)

if header.id == "XYZ " do
(
--print header

for i = 1 to header.size/12 do
(
x = readfloat f
y = readfloat f
z = readfloat f

GVP[GVP.count+1] = [x,z,y]
)

return 0
)

if IsHeader header.id then
(
--print header

end = ( ftell f ) + header.size

while (ftell f ) < end do
(
ReadBlock f header.size
)
)
else
(
fseek f -8 #seek_cur
if size < 4  and size != 0 do size = 4
fseek f size #seek_cur
)
),


function ReadFromFile f =
(
ReadBlock f 0
)
)


function tre_file f  =
(

reader = TREE_Data()
reader.ReadFromFile f

obj = Editable_Mesh()
obj.mesh.numverts = GVP.count
obj.mesh.numfaces = IDX.count

for i = 1 to obj.mesh.numverts do
  SetVert obj.mesh i GVP[i]
 
for i = 1 to obj.mesh.numfaces do
SetFace obj.mesh i IDX[i]
 

update obj
)

m_roll=newrolloutfloater "TRE Importer" 400 130

rollout TREImport "TRE Import" width:400 height:104
(
edittext filename "File:" pos:[9,6] width:312 height:17
button OpenBtn "Open" pos:[326,7] width:56 height:21 enabled:true
button ImportBtn "Import" pos:[9,68] width:80 height:21
checkbox Flgs "FLGS Size" pos:[9,39] width:94 height:12

on OpenBtn pressed do
(
s = GetOpenFileName types:"TRE file(*.tre)|*.tre" historyCategory:"TREImports"
if s != undefined do
(
filename.text = s
)
)
on ImportBtn pressed do
(
if FileName.text != "" do
(
Flag = if Flgs.checked then 4 else 1
tre_file (fopen FileName.text "rb")
fclose FileName
closeRolloutFloater m_roll
)
)
)

addrollout TREImport m_roll

I hope it survives longer as text, than a download.
(https://i.imgur.com/j8k18.jpg)

The maps i reexported to .OBJ, you can download it if you want.
Van Buren maps (https://rapidshare.com/files/2205227978/vanburenmaps.rar)

edit: Many thanks to Xammurapi for the working g3d script! Thanks, man! :D
Title: Re: Exports from Van Buren.
Post by: Horatio on October 30, 2012, 08:41:18 pm
Here it is, if anyone wants to export the materials in Max 2009, many, many years later, when all download links are dead.
(doublepost due to char limit)
Code: [Select]
function StringRead f =(
  s = ""
  len = readshort f
  for i = 0 to len - 1 do (
    n = readbyte f
    s += bit.intAsChar n
  )
  return s
)

FormatVer = 0

struct g3d_header (
    Sign = "", --: array[0..7]of char; // "B3D 1.1 "
    Unknown1 = 0, --: byte;
    Unknown2 = 0, --: byte;
    Unknown3 = 0, --: byte; //Header ID??
    GlobalScaleFactor= 0.0, --: single;
    Unknown4      = 0, --: byte; //Header ID??
    CoordinateScale  = 0.0, --: single;
    Unknown5 = 0, --: byte; //Header ID??
    CoordinateSystem = "", --: TCharArray;
    Unknown6 = 0, --: byte;
    Unknown7 = 0, --: longword;
function ReadFromFile f =
(
    for i = 0 to 7 do (
        n = readbyte f
        Sign += bit.intAsChar n
      )

  Unknown2 = readbyte f
  if Unknown2 == 3 then ( print "a"; FormatVer = 1; for i = 1 to 2 do readbyte f )
  else ( for i = 1 to 4 do readbyte f )
  GlobalScaleFactor = readfloat f
  CoordinateScale = readfloat f
  CoordinateSystem = StringRead f
  Unknown6 = readbyte f; Unknown7 = readlong f
)   
)

Model_Vertex_Position = #()
Model_Vertex_Texcoords = #()
Model_Vertex_Normal   = #()
Model_Faces_Index     = #()
Model_Faces_Mats      = #()

Txs = #()
TexturesDir = ""

Vertex_Type_Flag      = 0
Bones_Flag = 0

FS = 0
Zone_Flag = 0;

struct TVertex64 (
  Coordinate = Point3 0.0 0.0 0.0,      --: array[0..2]of single;
  Normal = Point3 0.0 0.0 0.0,      --: array[0..2]of single;
  Color      = Point4 0.0 0.0 0.0 0.0,  --: array[0..3]of single;
  Unknown1   = Point2 0.0 0.0,          --: array[0..1]of single;
  Unknown2   = Point3 0.0 0.0 0.0,          --: array[0..1]of single;
  Unknown3   = Point2 0.0 0.0,          --: array[0..1]of single;
  function ReadFromFile f = (
    Coordinate.x = readfloat f; Coordinate.z = readfloat f; Coordinate.y = readfloat f
Model_Vertex_Position[Model_Vertex_Position.count + 1] = Coordinate
Model_Vertex_Texcoords[Model_Vertex_Texcoords.count +1] = Unknown2
 
    Normal.x = readfloat f; Normal.y = readfloat f; Normal.z = readfloat f
    Model_Vertex_Normal[Model_Vertex_Normal.count + 1] = Normal  
 
Color.x = readfloat f; Color.y = readfloat f; Color.z = readfloat f; Color.w = readfloat f
 
--TexCoords 
Unknown1.x = readlong f
for i = 1 to Unknown1.x do
(
if i==1 then
(
Unknown2.x = readfloat f
Unknown2.y = 1 - readfloat f
Model_Vertex_Texcoords[Model_Vertex_Position.count] = Unknown2
)
else
(
readfloat f
readfloat f
)
)
Unknown1.x = readlong f
for i = 1 to Unknown1.x do (readfloat f; readfloat f;)
)
 
)

struct TVertex44 (
  Coordinate   = Point3 0.0 0.0 0.0, -- Eii?aeiaoa oi?ee (x, y, z: single)
  Normal    = Point3 0.0 0.0 0.0, -- Ii?iaeu oi?ee (x, y, z: single)
  Color        = #(0, 0, 0, 0),      -- Oaao oi?ee (r, g, b, a: byte)
  TextureCoord = Point3 0.0 0.0 0.0,     -- Oaenoo?iua eii?aeiaou (s, t: single);
  Unknown1     = #(),     -- Iaecaanoii
  function ReadFromFile f = (
    Coordinate.x = readfloat f; Coordinate.z = readfloat f; Coordinate.y = readfloat f
Model_Vertex_Position[Model_Vertex_Position.count + 1] = Coordinate
 
    Normal.x = readfloat f; Normal.y = readfloat f; Normal.z = readfloat f
Model_Vertex_Normal[Model_Vertex_Normal.count + 1] = Normal
 
    for i = 1 to 4 do Color[i] = readbyte f

TextureCoord.x = readfloat f; TextureCoord.y = 1 - readfloat f
Model_Vertex_Texcoords[Model_Vertex_Texcoords.count + 1] = TextureCoord

    Unknown1[1] = readlong f; Unknown1[2] = readlong f
  )
)

struct TVert_Bones_Data (
Bone   = 0,   --: longword
Weight = 0.0, --: single
function ReadFromFile f = (
  Bone = readlong f
  Weight = readfloat f
)
)

struct TMaterial_Data44 (
    Name   = "",
    Mtl_ID   = "",    
    Unknown1   = 0.0,
    BLEND_STATE   = "",
    MATERIAL_TYPE = "",
    Unknown2   = 0,
    Zone   = "",
    Unknown3   = 0,
function ReadFromFile f = (
      Name = StringRead f; Mtl_ID = StringRead f
      for i = 0 to 16 do Unknown1 = readfloat f
      BLEND_STATE = StringRead f; MATERIAL_TYPE = StringRead f
  a = readlong f; print a
      for i = 1 to 16 do ( Unknown2 = readlong f; if Unknown2 == 1 then
  (
  Zone = StringRead f;
  tm = bitmaptexture()
  tm.alphasource = 2
  tm.filename = TexturesDir + Zone
  Txs[Txs.count + 1] = standardMaterial diffuseMap:tm showInViewport:true
 
  Unknown2 = readlong f;
          for i = 1 to Unknown2 do StringRead f;
  exit;
  )
)
)
)

struct TMaterial_Data (
    Name   = "", --: TCharArray;
    Mtl_ID   = "", --: TCharArray;
    Unknown1   = 0.0, --: array[0..16]of single; //Most likely Ambient, Diffuse, Emissive, Specular, Shininess, and Alpha
    BLEND_STATE   = "", --: TCharArray;
    MATERIAL_TYPE = "", --: TCharArray;
    Unknown2   = 0, --: array[0..63]of byte; //Flags??
    Zone   = "", --: TCharArray;
    Unknown3   = 0, --: longword;
function ReadFromFile f = (
Unknown3 = readlong f

      Name = StringRead f
      a = readlong f;  for i = 1 to a do Mtl_ID = StringRead f

  tm = bitmaptexture()
  tm.alphasource = 2
  if Mtl_ID != "" then tm.filename = TexturesDir +  Mtl_ID
  Txs[Txs.count + 1] = standardMaterial diffuseMap:tm showInViewport:true
 
local kk = 0
  readbyte f; readlong f; kk = readlong f; print kk
      for i = 1 to kk/3 do (
  a = 0; a = readlong f
  b = 0; b = readlong f
  c = 0; c = readlong f
  a = a + 1;  b = b + 1; c = c + 1;
  Model_Faces_Index[Model_Faces_Index.count + 1] = [b, a, c]
  Model_Faces_Mats[Model_Faces_Mats.count + 1] = Txs.count ;  
  )
      for i = 1 to kk do (Unknown2 = readbyte f)
)
)


struct TVertex_Node (
    Unknown1       = 0,
Unknown2       = 0,
VertexTypeFlag = 0,
NumberVerts    = 0,
SizeOfVerts    = 0,
    Unknown3       = #(),
IsBones       = 0,     
BonesPerVert   = 0,
NumberMaterial = 0,
    function ReadFromFile f = (
      Unknown1 = readbyte f;
  Unknown2 = readbyte f;
  format "VertNode U1 % U2 %\n" Unknown1 Unknown2;

  if FormatVer == 0 then
  (
  VertexTypeFlag = readbyte f;
  Vertex_Type_Flag = VertexTypeFlag
  )
  else Vertex_Type_Flag = 0
 
  NumberVerts = readlong f;
  format "Vertex count - %\n" NumberVerts
format "Vertex_Type_Flag - %\n" Vertex_Type_Flag
      if Vertex_Type_Flag == 1 then (
    SizeOfVerts = readlong f;
format "SizeOfVerts - %\n" SizeOfVerts
for i = 1 to NumberVerts do (Vertex44 = TVertex44(); Vertex44.ReadFromFile f)
for i = 1 to 6 do (Unknown3[i] = readfloat f); IsBones = readbyte f

if IsBones == 1 then
(
BonesPerVert = readlong f
format "BonesPerVert - %\n" BonesPerVert
for i = 1 to NumberVerts * BonesPerVert do (VBD = TVert_Bones_Data(); VBD.ReadFromFile f;)
)
 
NumberMaterial = readlong f
format "NumberMaterial - %\n" NumberMaterial
for i = 1 to NumberMaterial do (MD = TMaterial_Data44(); MD.ReadFromFile f; print MD)

--for i = 1 to NumberMaterial do (
-- Zone = ""; S = ""
-- for j = 1 to Zone_Flag + 1 do (
--   S = StringRead f; Zone += S
-- )
-- print Zone
-- pos = ftell f; print Pos
--)

--StringRead f

for i = 1 to NumberMaterial do (StringRead f)
--StringRead f

Mat_list = #()

NumVert = 0; NumTri = 0
for i = 1 to NumberMaterial do (a = readlong f; Mat_list[Mat_list.count+1] = a )
for i = 1 to NumberMaterial do (a = readlong f; NumVert +=a; )
print "NumVert"; print NumVert; print "NumTri"; print NumTri;
NumTri = NumTri / 3;
for j = 1 to NumberMaterial do (
for i = 1 to (Mat_list[j]/3)  do (
  a = 0; a = readshort f #unsigned;
  b = 0; b = readshort f #unsigned;
  c = 0; c = readshort f #unsigned;
  a = a + 1;  b = b + 1; c = c + 1;
  Model_Faces_Index[Model_Faces_Index.count + 1] = [c, b, a];
  Model_Faces_Mats[Model_Faces_Mats.count + 1] = j;
--print Model_Faces_Index[Model_Faces_Index.count]
))
--k = readlong f;
--for i = 1 to k do ( l = StringRead f; print l; )
  ) else (

for i = 1 to NumberVerts do (Vertex64 = TVertex64(); Vertex64.ReadFromFile f)
pos = ftell f; print pos
NumberMaterial = readlong f
format "NumberMaterial - %\n" NumberMaterial
for i = 1 to NumberMaterial do (MD = TMaterial_Data(); MD.ReadFromFile f; print MD)
--k = readlong f;
--for i = 1 to k do ( l = StringRead f; print l; )
  )
--   Print Model_Vertex_Position
    )
)

struct TBone (
    Name     = "",
    Unknown1 = 0, --: word;
    Flag      = 0, --: byte;  //Header ID?? For "Transform"
    Translation = point3 0.0 0.0 0.0, --: array[0..2]of single;
    Rotation = quat 0.0 0.0 0.0 0.0, --: array[0..3]of single;
function ReadFromFile f = (
Name = StringRead f; Unknown1 = readshort f; Flag = readbyte f
if Flag != 0 then
(
Translation.x = readfloat f; Translation.z = readfloat f; Translation.y = readfloat f;
if Flag == 3 then (Rotation.x = readfloat f; Rotation.z = readfloat f; Rotation.y = readfloat f; Rotation.w = readfloat f)
if Flag == 2 then readfloat f
)
)
)

struct TColor (
  r = 0, g = 0, b = 0, a = 0,
  function ReadFromFile f = (r = readfloat f; g = readfloat f; b = readfloat f; a = readfloat f
  )
)

struct TMater (
  Ambient   = TColor(),
  Diffuse   = TColor(),
  Emissive  = TColor(),
  Specular  = TColor(),
  Shininess = 0,
  Alpha     = 0,
  function ReadFromFile f = (
    Ambient.ReadFromFile f; Diffuse.ReadFromFile f
    Emissive.ReadFromFile f; Specular.ReadFromFile f
    Shininess = readfloat f; Alpha = readfloat f
  )
)

struct TMaterials (
    Mtl_ID = "",
    Name = "",
    Mater = TMater(),
    BLEND_STATE = "",
    MATERIAL_TYPE = "",
    Flag_1 = 0,
Flag_2 = 0,
function ReadFromFile f = (
      Mtl_ID = StringRead f; Name = StringRead f
      Mater.ReadFromFile f
      BLEND_STATE = StringRead f; MATERIAL_TYPE = StringRead f
      Flag_1 = readlong f; Flag_2 = readlong f
)
)

struct TTextures (
    Unknown1 = 0, --: byte;
    Name = "", --: TCharArray;
    FileName = "", --: TCharArray;
    Width = 0, --: longword;
    Height = 0, --: longword;
function ReadFromFile f = (
      Unknown1 = readbyte f; Name = StringRead f; FileName = StringRead f
      Width = readlong f; Height = readlong f
)
)

struct TNodes (
  Unknown1 = 0, --: byte;
  Name = "", --: TCharArray;
  function ReadFromFile f = (
    Unknown1 = readbyte f; Name = StringRead f
  )
)

struct TMat_Data (
    Unknown1 = 0, --: array[0..2]of byte;
    Name     = "", --: TCharArray;
    TextureOn = 0, --: longword;
    Texture  = "", --: TCharArray;
    Unknown3 = 0, --: longword;
    Unknown4 = 0, --: byte;
    NumOfPoints = 0, --: longword;
    function ReadFromFile f = (
      for i = 0 to 2 do (Unknown1 = readbyte f)
  Name = StringRead f
  print Name
  TextureOn = readlong f
  if TextureOn != 0 then Texture = StringRead f
  Unknown3 = readlong f
  Unknown4 = readbyte f
  NumOfPoints = readlong f
      print NumOfPoints
    )

)
--   Points                      : array of longword;
--    MatID                       : array of byte;
struct TMaterial_Node (
    NumberMaterialNodes = 0, --: longword;
    Unknown1            = 0, --: byte;
    function ReadFromFile f = (
    NumberMaterialNodes = readlong f
  Unknown4 = readbyte f
      format "MaterialNode - NumberMaterialNodes = %d\n"  NumberMaterialNodes
    )
 --   Mat_Data                    : array of TMat_Data;
)

function FileSizeGet f = (
  fseek f 0 #seek_end
  size = ftell f
  return size
)

function FilePosGet f = (
  pos = ftell f
  return pos
)

function main f asmooth dir = (
print f
TexturesDir = dir
  local FileSize = 0
  local FilePos = 0
  FileSize = FileSizeGet f
  FS = FileSize
  fseek f 0 #seek_set
  g3d_head = g3d_header(); g3d_head.ReadFromFile f; print "head"; print g3d_head; print "head_end"
  Material_Node = TMaterial_Node()
  do (
    b = 0; b = readbyte f
case b of (
      0x07: (Materials = TMaterials(); Materials.ReadFromFile f; print "Materials"; print Materials; pos = ftell f; print pos)
  0x08: (Textures = TTextures(); Textures.ReadFromFile f; print "Textures"; print Textures; pos = ftell f; print pos)
  0x0A: (Nodes = TNodes(); Nodes.ReadFromFile f; print "Nodes";  print Nodes; pos = ftell f; print pos)
  0x0E: (Bones_Flag = 1; Bone1 = TBone(); Bone1.ReadFromFile f; print "Bones"; print Bone1; pos = ftell f; print pos)
  0x0F: (Vertex_Node = TVertex_Node(); Vertex_Node.ReadFromFile f; print "VertexNodes"; pos = ftell f; print pos)
  default: exit
)
FilePos = FilePosGet f
  )
  while FilePos != FileSize

  print (FilePosGet f);
 
  local obj
  obj = Editable_Mesh()
 
  obj.material = multimaterial numsubs:Txs.count
 
  print "tx count"; print Txs.count
  for i = 1 to Txs.count do
  (
  obj.material.materialList[i] = Txs[i]
  meditMaterials[i] = Txs[i]
  )
 
  obj.mesh.numverts = Model_Vertex_Position.count
  obj.mesh.numfaces = Model_Faces_Index.count
  obj.mesh.numtverts = Model_Vertex_Position.count
 
  format "tx count %\n" Model_Vertex_Texcoords.count
  format "vert count %\n" Model_Vertex_Position.count
  format "faces count %\n" Model_Faces_Index.count
 
  for i = 1 to obj.mesh.numverts do
  SetVert obj.mesh i Model_Vertex_Position[i]
 
  for i = 1 to obj.mesh.numfaces do
  SetFace obj.mesh i Model_Faces_Index[i]
 
  for i = 1 to obj.mesh.numtverts do
  SetTVert obj.mesh i Model_Vertex_Texcoords[i]
 
  buildTVFaces obj.mesh false
 
  for i = 1 to obj.mesh.numfaces do
  (
  setTVFace obj.mesh i Model_Faces_Index[i]
  setFaceMatID obj.mesh i Model_Faces_Mats[i]
  )
 
 
  meshop.weldVertsByThreshold obj.mesh #{1..obj.mesh.numverts} 0.001
  meshop.autoSmooth obj.mesh #{1..obj.mesh.numfaces} asmooth
 
  addmodifier obj (Unwrap_UVW())
   update obj
)

m_roll=newrolloutfloater "G3D Importer" 400 130

rollout G3DImport "G3D Import" width:400 height:104
(
edittext filename "File:" pos:[8,8] width:312 height:17
button OpenBtn "Open" pos:[326,7] width:56 height:21 enabled:true
button ImportBtn "Import" pos:[8,72] width:80 height:21
spinner asmooth "Auto Smooth: " pos:[32,39] width:160 height:16 range:[0,180,0] scale:0.1



on G3DImport open do
(
ASmooth.value = 45.0
)
on OpenBtn pressed do
(
s = GetOpenFileName types:"G3D file(*.g3d)|*.g3d" historyCategory:"G3DImports"
if s != undefined do
(
filename.text = s
)
)
on ImportBtn pressed do
(
if FileName.text != "" do
(
main (fopen FileName.text "rb") ASmooth.value (getFilenamePath FileName.text)
fclose FileName
closeRolloutFloater m_roll
)
)
)

addrollout G3DImport m_roll
Title: Re: Exports from Van Buren.
Post by: Luther Blissett on October 30, 2012, 09:18:10 pm
Excellent! I tried this myself a few months back, and got a bit lost with garbled export mess (things like the front of a building randomly being about a mile to the right of the rest of the model).

Have you had any joy with any of the objects? I'm particularly interested in getting the models from the Van Buren cars and a few other small scenery objects, so I could analyse/edit/adjust them (for eventual use as flat rendered scenery objects).

p.s. I should be "back on" with the previously discussed 3D stuff very soon. Just got a few smaller projects at work to finish.
Title: Re: Exports from Van Buren.
Post by: Horatio on October 30, 2012, 09:49:58 pm
Oh yes. :)

All the files i will convert during the week, but here are the vehicles i just ripped out :)
(https://i.imgur.com/wwQ0z.jpg)
https://rapidshare.com/files/2286146652/VBvehicles.rar

Good to have you back, Luther.
Title: Re: Exports from Van Buren.
Post by: Wipe on October 30, 2012, 11:27:07 pm
It reminds me some old NMA thread (http://www.nma-fallout.com/forum/viewtopic.php?t=52696&start=0&postdays=0&postorder=asc)...
Title: Re: Exports from Van Buren.
Post by: Luther Blissett on October 30, 2012, 11:38:06 pm
Nice one! There's a few garbled connections in there, like on the wheels - but it's easily fixable by reconnecting a few vertices here and there. Probably a triangulation/quadrangulation/import/export thing. The car model is surprisingly simple though - it should be fairly easy to adjust, and in theory if rendered at the correct size/angle and repainted carefully, an easy way to build up some extra scenery objects.

Also, yes it's very similar to that thread - though I think many of the links off there died. I can't quite remember, but I know I couldn't find what it was I was looking for.

Anyway, I got my toy cars to play with now :P
VROOOOOOM
Title: Re: Exports from Van Buren.
Post by: Surf on October 30, 2012, 11:38:21 pm
It reminds me some old NMA thread (http://www.nma-fallout.com/forum/viewtopic.php?t=52696&start=0&postdays=0&postorder=asc)...

All those links are down there. ;)
Title: Re: Exports from Van Buren.
Post by: Wipe on October 31, 2012, 12:56:31 am
All those links are down there. ;)

But there's some technical blabla here and there, plus shots what else can be found - still worth to check i think.
Title: Re: Exports from Van Buren.
Post by: Horatio on October 31, 2012, 08:56:36 am
Nice one! There's a few garbled connections in there, like on the wheels - but it's easily fixable by reconnecting a few vertices here and there. Probably a triangulation/quadrangulation/import/export thing.

No, its actually a clever shading trick to reduce polycount on wheels. Check out the renders, they are smooth.
Title: Re: Exports from Van Buren.
Post by: Luther Blissett on October 31, 2012, 05:07:37 pm
Think mine's more garbled than that - possibly from the Wings3D import - on the Police car I've got spiky wheels, a gap missing on the wheel arch and a wonky bonnet - it does seem to "magically" clear up a bit when rendered though (which is something I've never seen before), but not perfectly.
Title: Re: Exports from Van Buren.
Post by: xammurapi on October 31, 2012, 07:43:15 pm
It reminds me some old NMA thread (http://www.nma-fallout.com/forum/viewtopic.php?t=52696&start=0&postdays=0&postorder=asc)...
You are right. I actually found the link to the script about a year ago on this forum. But I downloaded it elsewhere. It seems that the author of scripts for 3ds Max http://www.fallout-archives.com/forums/index.php?showuser=1083

Fluke that I saved them, I usually just do bookmark interesting resources ...
Title: Re: Exports from Van Buren.
Post by: xammurapi on October 31, 2012, 08:19:42 pm
I used the resources VanBuren in my experiments with Unity3d.

That's what I did:
Character Customization (Cvet posted on its website an animated models. Unfortunately they are now no longer available)
https://www.youtube.com/watch?v=oQX4xUSxPms
A trip to the desert (Location - Desert near San Francisco, terrain is generated based on the data of NASA  (http://visibleearth.nasa.gov/view.php?id=73934))
https://www.youtube.com/watch?v=ehYZAXfUaak

Random map generated from tiles.
https://www.youtube.com/watch?v=egEpr07jwMc

Moving around the map using the algorithm A-star (in the style of Diablo or Fallout 1-2)
https://www.youtube.com/watch?v=BVXhPPfoTZw
Title: Re: Exports from Van Buren.
Post by: Horatio on November 01, 2012, 10:15:44 pm
It is most impressive, Xammurapi. :D You're way ahead.

Also, to my fault, I must admit that imports indeed lack some vertex data. I think, it needs some fixes.
Title: Re: Exports from Van Buren.
Post by: Gob on November 03, 2012, 04:01:20 pm
Can't Van Burren be continued?
Title: Re: Exports from Van Buren.
Post by: Haraldx on November 03, 2012, 04:29:07 pm
If somebody is up to somehow getting somekind of tools, then yes. Otherwise - no.
Title: Re: Exports from Van Buren.
Post by: Gob on November 03, 2012, 05:28:17 pm
If somebody is up to somehow getting somekind of tools, then yes. Otherwise - no.

Or use the fonline engine for it.. we could have 3D enviorments and it would make the game even more open for modders.                                                                                                                   
Title: Re: Exports from Van Buren.
Post by: xammurapi on November 03, 2012, 06:32:10 pm
Or use the fonline engine for it.. we could have 3D enviorments and it would make the game even more open for modders.                                                                                                                   
This is analogous to how to re-build the great pyramids of Giza.
We know the architectural plans. Know how to use building materials and construction techniques.
But it will not have done ever.

Anyone who wants to do it - does not have the time, wealth, or power, and therefore not in a position to do so. The one who has the power, wealth, and time - has no desire, or just busy with other large-scale projects.
Title: Re: Exports from Van Buren.
Post by: Haraldx on November 03, 2012, 06:37:36 pm
Or use the fonline engine for it.. we could have 3D enviorments and it would make the game even more open for modders.                                                                                                                   
That sounds like a plan. But I'm afraid the project might be too ambitious.
Title: Re: Exports from Van Buren.
Post by: Jotisz on November 03, 2012, 07:21:10 pm
Well sadly most things are in a state of pause so I feel 3D environment is a bit too ambitious.
Still these assets could be real useful, a few tweaking with a 3d software be it wings, blender, max or anything else we could produce quite a lot of new sceneries with ease.
Title: Re: Exports from Van Buren.
Post by: fonliner on November 03, 2012, 07:28:44 pm
I think everything is possible to do but someone who really want make this is needed. Look at fonline - fallout 1 and 2 online, our dream has been made and still in development (TLA, 2238 and other servers). Only want we need is few people who can do it, have time and power and REALLY want.
Title: Re: Exports from Van Buren.
Post by: Horatio on November 03, 2012, 07:31:12 pm
The Van Buren engine, it is unfortunately a bit antiqued. Unity and FOnline are better suited now for this.
Title: Re: Exports from Van Buren.
Post by: Johnnybravo on November 04, 2012, 01:53:16 am
You're not going to do it because of property things and lack of resources (not just art, acting, storylines, etc.)
Honestly there was not much for use, game story was pretty ridiculous when they unveiled it, and something was reused in newer games as well.
Title: Re: Exports from Van Buren.
Post by: FrankenStone on November 04, 2012, 02:34:56 am
The Van Buren engine, it is unfortunately a bit antiqued. Unity and FOnline are better suited now for this.

van buren engine is the only engine i could think of which would have be the best engine for a fallout 3 title ...

unitiy is great too but its something different ... because the vanburen or jefferson engine would have be a real improvement to fallout1 and 2 style ... but its just my opinion
Title: Re: Exports from Van Buren.
Post by: Horatio on November 04, 2012, 10:36:19 pm
From purist view, you may be right, I would like to see the VB S.P.E.C.I.A.L. System, too, but first, its property of Beth and still needs to be heavily overhauled. Replicating it with new features is the more comfortable solution.

Why didn't Mr.Cvetinsky modified Fallout engine for multiplayer?
Title: Re: Exports from Van Buren.
Post by: xammurapi on November 05, 2012, 08:55:14 am
Why didn't Mr.Cvetinsky modified Fallout engine for multiplayer?
sometimes make from scratch is easier than to redo the existing
Title: Re: Exports from Van Buren.
Post by: Horatio on November 05, 2012, 03:49:19 pm
Exactly.
Title: Re: Exports from Van Buren.
Post by: Lexx on November 05, 2012, 05:52:29 pm
Well, it is not only about multiplayer. With the FOnline engine, you can do pretty much whatever you want, unlike the Fo2 engine, which is hardcodet from a to z. It took years to get access to even just simple stuff... and this only via hooks and stuff into the engine with Sfall. So it's all nothing but some tricky hackery.

Simply the huge maps you can build in the FOnline engine just aren't possible in Fo1/2. Also editing the graphics - FOnline engine supports all kind of graphic formats, while Fo1/2 only eat converted frms with a limited set of colors, editing the sound, etc. etc. it is all so much easier and more convenient. Another example is the small terrain tiles. You don't have to use them at all. Nothing hinders you to just create a huge scene in a 3d programm, render it to 2d and put it into the game as is.
Title: Re: Exports from Van Buren.
Post by: Horatio on November 05, 2012, 06:56:49 pm
Listen to the man above, he knows about modding.

So if we'd decompile VB engine, we will still stand before a huge wall of tasks, we'd have to understand the foreign code from scratch and THEN, we could add new things.

Art is a different thing, though, even if i noticed that the VB art is somewhat bulky for Fallout scenery.
Title: Re: Exports from Van Buren.
Post by: xammurapi on November 07, 2012, 10:15:21 am
If anyone is interested and wants to see the resources Van Buren near, here is a playable web-builds:

Character customization (http://vaultcrawl.ru/xinoxano/odevashka/odevashka.html)

camera control: arrow keys or WASD,
in the interface, press the arrow keys to select an item or a button with the name to remove the item.
build is based on Flash

A trip to the desert (http://vaultcrawl.ru/xinoxano/pokatushka/WebPlayer.html)

Control: WASD and Space. build based on the technology Unity3d webplayer http://unity3d.com/webplayer/ because Flash does not support terrain

Generating random vault-map (http://vaultcrawl.ru/xinoxano/pathfind/WebPlayer.html)

Controls: Click the left mouse button on the floor or item indicates the place where the character should go. Movement of the mouse + hold the right button moves the camera. Mouse wheel changes the zoom of the camera. Left Control - activates a flamethrower. Left Shift: Increases movement speed.

ISOMETRIC button switches to the orthographic mode that is similar to the style of the classic series camera fallout. However, the shadow does not work in this mode and the light passes through the walls.
New Map button creates another level of the same size, but with a different arrangement of rooms and objects.

build based on the technology Unity3d webplayer http://unity3d.com/webplayer/ because Flash does not support some render features
Title: Re: Exports from Van Buren.
Post by: Surf on November 07, 2012, 05:04:52 pm
Nice! Technology these days. :o
Title: Re: Exports from Van Buren.
Post by: Jotisz on November 07, 2012, 06:01:17 pm
They are showcasing a lot of stuffs. Thanks for sharing them Xammurapi.
Title: Re: Exports from Van Buren.
Post by: barter1113 on November 07, 2012, 09:10:58 pm
@xammurapi you are my god! Please recreate Van Buren for game via browser...

(http://i0.kym-cdn.com/photos/images/original/000/241/796/cac.png)
Title: Re: Exports from Van Buren.
Post by: xammurapi on November 08, 2012, 12:01:29 pm
Thank you for your feedback.
I would love to join the team, which would deal with the creation of the Van Buren or Fallout or Fonline based on the technologies available in unity3d.
However, all the projects that I have found (eg Postworld) have zero activity.
And the creation of the game by one person is absolutely unreal.
Practical purpose for a single developer can only be a small casual game.

So that together waiting Wasteland 2 by Brian Fargo.
Which by the way, too, like is on unity3d
Title: Re: Exports from Van Buren.
Post by: xammurapi on May 13, 2014, 11:56:13 pm
Just for fun.
(https://i.imgur.com/HXC4Amp.png)
video: http://youtu.be/dwAp87S3CLQ
web-build: http://vaultcrawl.ru/webplayer/AllChars/AllChars.html
VB male characters and all the fonline 3d male characters in one scene (except for a child to whom I have not found the texture).
Rigging of Fo3d characters made by me in Blender. Animation - VB

For correct display of webbuild most likely need a video card with shader model of the third version, because I used tessellation to the characters, so they looked at least a little more modern.

Retargeting animation made using system Unity3d Mecanim. Since the characters VB have distinguished the structure of the skeleton,
fo3d characters have glitch with "destabilizing" the legs. In VB, the root element is "root", located at ground level, the legs are not inherited from the pelvis, and from this root. When I did the rigging, I wasn't aware of this, taking the pelvis is the root element of the armature.

Theoretically, a person with sufficient knowledge of C# or JS, can make animation exporter.  During playback of a scene, information on the status of each bone is available in each frame, there is information on the number of frames per second, so, all of this can lead to a standard speed of 30 frames per second and write to a file in the format BVH or FBX.
Sounds simple enough, but in practice difficult, at least for me.
Title: Re: Exports from Van Buren.
Post by: hexer on May 15, 2014, 09:31:42 am
Wow! Wish I could use these in Van Buren  8)
Good luck with your project!
Title: Re: Exports from Van Buren.
Post by: xammurapi on May 15, 2014, 03:57:28 pm
Wow! Wish I could use these in Van Buren  8)
Good luck with your project!
Contact me via Skype! Maybe I can help.
Title: Re: Exports from Van Buren.
Post by: raynor009 on June 07, 2014, 10:56:19 pm
Haha that mutant reminds me of the turtle ninja's