The .OBJ importer is coming along nicely! All I need to do now is read materials and finalize my ModelPackage XML format
"ModelPackage XML format??"
Oh, right. A few days before my falling-out with the .OBJ format, I created a conceptual "ModelPackage XML" that loosely resembles the actual ModelPackage format itself. To get a better idea of how this would work, I created an exporter which looks something like this:
Code: Select all<ModelPackage Type="VVS" Version="1">
<Groups>
<MergedPartsGroup UID="1419248412" File="1419248412.obj">
<PartsGroup Name="Model1">
<Part Slot="1" Type="30" Source="Model1_1" />
<Part Slot="2" Type="28" Source="Model1_2" />
<Part Slot="3" Type="24" Source="Model1_3" />
<Part Slot="5" Type="1" Source="Model1_5" />
<Part Slot="6" Type="0" Source="Model1_6" />
</PartsGroup>
<PartsGroup Name="Model2">
<Part Slot="1" Type="30" Source="Model2_1" />
<Part Slot="2" Type="28" Source="Model2_2" />
<Part Slot="6" Type="0" Source="Model2_6" />
</PartsGroup>
<PartsGroup Name="Model3">
<Part Slot="1" Type="30" Source="Model3_1" />
<Part Slot="2" Type="28" Source="Model3_2" />
</PartsGroup>
<PartsGroup Name="Model4">
<Part Slot="1" Type="30" Source="Model4_1" />
<Part Slot="2" Type="28" Source="Model4_2" />
</PartsGroup>
<PartsGroup Name="Model5">
<Part Slot="1" Type="30" Source="Model5_1" />
</PartsGroup>
<PartsGroup Name="Model6">
<Part Slot="1" Type="30" Source="Model6_1" />
</PartsGroup>
<PartsGroup Name="Model7">
<Part Slot="1" Type="30" Source="Model7_1" />
</PartsGroup>
<PartsGroup Name="Model8">
<Part Slot="1" Type="30" Source="Model8_1" />
</PartsGroup>
<PartsGroup Name="Model9">
<Part Slot="1" Type="30" Source="Model9_1" />
</PartsGroup>
<PartsGroup Name="Model10">
<Part Slot="1" Type="30" Source="Model10_1" />
</PartsGroup>
<PartsGroup Name="Model11">
<Part Slot="1" Type="30" Source="Model11_1" />
</PartsGroup>
<PartsGroup Name="Model12">
<Part Slot="1" Type="30" Source="Model12_1" />
</PartsGroup>
<PartsGroup Name="Model13">
<Part Slot="1" Type="30" Source="Model13_1" />
<Part Slot="2" Type="28" Source="Model13_2" />
<Part Slot="6" Type="0" Source="Model13_6" />
</PartsGroup>
<PartsGroup Name="Model14">
<Part Slot="1" Type="30" Source="Model14_1" />
<Part Slot="2" Type="28" Source="Model14_2" />
<Part Slot="6" Type="0" Source="Model14_6" />
</PartsGroup>
<PartsGroup Name="Model15">
<Part Slot="1" Type="30" Source="Model15_1" />
<Part Slot="2" Type="28" Source="Model15_2" />
<Part Slot="6" Type="0" Source="Model15_6" />
</PartsGroup>
<PartsGroup Name="Model16">
<Part Slot="1" Type="30" Source="Model16_1" />
<Part Slot="2" Type="28" Source="Model16_2" />
</PartsGroup>
<PartsGroup Name="Model17">
<Part Slot="1" Type="30" Source="Model17_1" />
</PartsGroup>
<PartsGroup Name="Model18">
<Part Slot="1" Type="30" Source="Model18_1" />
<Part Slot="2" Type="28" Source="Model18_2" />
</PartsGroup>
<PartsGroup Name="Model19">
<Part Slot="1" Type="30" Source="Model19_1" />
</PartsGroup>
<PartsGroup Name="Model20">
<Part Slot="1" Type="30" Source="Model20_1" />
<Part Slot="2" Type="28" Source="Model20_2" />
</PartsGroup>
<PartsGroup Name="Model21">
<Part Slot="1" Type="30" Source="Model21_1" />
</PartsGroup>
<PartsGroup Name="Model22">
<Part Slot="1" Type="30" Source="Model22_1" />
</PartsGroup>
<PartsGroup Name="Model23">
<Part Slot="1" Type="30" Source="Model23_1" />
<Part Slot="2" Type="28" Source="Model23_2" />
</PartsGroup>
<PartsGroup Name="Model24">
<Part Slot="1" Type="30" Source="Model24_1" />
<Part Slot="2" Type="28" Source="Model24_2" />
</PartsGroup>
<PartsGroup Name="Model25">
<Part Slot="1" Type="30" Source="Model25_1" />
<Part Slot="2" Type="28" Source="Model25_2" />
<Part Slot="6" Type="0" Source="Model25_6" />
</PartsGroup>
<PartsGroup Name="Model26">
<Part Slot="1" Type="30" Source="Model26_1" />
<Part Slot="2" Type="28" Source="Model26_2" />
<Part Slot="6" Type="0" Source="Model26_6" />
</PartsGroup>
</MergedPartsGroup>
</Groups>
</ModelPackage>
That would be the Dodge Challenger in Miami if it were an XML file. I haven't decided on the format of materials yet, but I did write a snippet of what I
think it should be by hand:
Code: Select all<Materials>
<MaterialGroup Name="mat_01">
<Material Name="wheel01">
<SubMaterial Type="Wheel" Flags="1030" AlphaSpecular="1" TextureFile="wheel01_1.dds" />
<SubMaterial Type="Wheel" Flags="1030" AlphaSpecular="1" TextureFile="wheel01_2.dds" />
<SubMaterial Type="Wheel" Flags="1030" AlphaSpecular="1" TextureFile="wheel01_3.dds" />
<SubMaterial Type="Wheel" Flags="1030" AlphaSpecular="1" TextureFile="wheel01_4.dds" />
</Material>
<Material Name="body01">
<SubMaterial Type="ColorMaskDamage" Flags="5126" AlphaSpecular="1" Texture="body01" />
</Material>
<Material Name="body02">
<SubMaterial Type="ColorMaskDamage" Flags="5126" AlphaSpecular="1" Texture="body02" />
</Material>
</MaterialGroup>
</Materials>
<Textures>
<TextureGroup Name="body01">
<Texture File="body_clean.dds"/>
<Texture File="body_clean_mask.dds"/>
<Texture File="body_damaged.dds"/>
<Texture File="body_damaged_mask.dds"/>
</TextureGroup>
<TextureGroup Name="body02">
<Texture File="body_clean.dds"/>
<Texture File="body_clean_mask.dds"/>
<Texture File="body_damaged.dds"/>
<Texture File="body_damaged_mask.dds"/>
</TextureGroup>
</Textures>
If anyone has suggestions for how model importing should work, I'm all ears. If I like your idea(s), I might implement them!