Talk:OniSplit

From OniGalore
Revision as of 17:55, 4 April 2013 by Iritscen (talk | contribs) (putting change log here so it doesn't take up space on article page)
Jump to navigation Jump to search

Neo, in the latest version of OniSplit, when a TRAM is extracted as .xml, the framecount is not included. Previous versions would have attributes like this: <FrameCount>52</FrameCount> <Duration>52</Duration>. In a couple of modified TRAMs, I used that attribute to shorten an animation. For example, I would change <FrameCount>52</FrameCount> to <FrameCount>45</FrameCount>.

Could you please add that attribute back to the xml? Thank you EdT

Nope, I'm not adding that back. If you want to shorten an animation the do the right thing and edit the Heights, Velocities, Rotations and Positions elements. I realise that's more complicated to do (especially for Rotations) but setting the FrameCount directly is a hack. Hopefully we'll have soon a Collada animation importer and that will simplify editing animations a bit.

Neo

Ok, you know what's best. So how soon is soon for the Collada importer? :-) EdT

I got the following error message when extracting AKEVAirport.oni using version version 0.9.40.0 and the GameDataFolder from the AE Installer.

 System.InvalidOperationException: The comparer threw an exception. ---> System.NullReferenceException: Object reference not set to an instance of an object
 at Oni.Akira.EnvironmentExporter+Polygon.System.IComparable<Oni.Akira.EnvironmentExporter.Polygon>.CompareTo (Oni.Akira.Polygon other) [0x00000] 
 at System.Collections.Generic.GenericComparer`1[Oni.Akira.EnvironmentExporter+Polygon].Compare (Oni.Akira.Polygon , Oni.Akira.Polygon ) [0x00000] 
 at System.Array.compare[Polygon] (Oni.Akira.Polygon value1, Oni.Akira.Polygon value2, IComparer`1 comparer) [0x00000] 
 at System.Array.qsort[Polygon,Polygon] (.Polygon[] keys, .Polygon[] items, Int32 low0, Int32 high0, IComparer`1 comparer) [0x00000] 
 at System.Array.Sort[Polygon,Polygon] (.Polygon[] keys, .Polygon[] items, Int32 index, Int32 length, IComparer`1 comparer) [0x00000] --- End of inner exception stack trace ---
 at System.Array.Sort[Polygon,Polygon] (.Polygon[] keys, .Polygon[] items, Int32 index, Int32 length, IComparer`1 comparer) [0x00000] 
 at System.Array.Sort[Polygon] (.Polygon[] array, Int32 index, Int32 length, IComparer`1 comparer) [0x00000] 
 at System.Collections.Generic.List`1[Oni.Akira.EnvironmentExporter+Polygon].Sort () [0x00000] 
 at Oni.Akira.EnvironmentExporter.CreateMeshes () [0x00000] 
 at Oni.Akira.EnvironmentExporter.Export (Oni.InstanceDescriptor akev, Oni.Geometry.Dae.Document document, System.String outputDirPath) [0x00000] 
 at Oni.DaeExporter.ExportInstance (Oni.InstanceDescriptor descriptor) [0x00000] 
 at Oni.Exporter.ExportInstanceList (System.Collections.Generic.List`1 descriptors) [0x00000] 
 at Oni.Exporter.Export (Oni.InstanceFileManager fileManager, System.String sourceFilePath, System.String filter) [0x00000] 
 at Oni.Program.ExtractGeometry (System.String[] args) [0x00000] 
 at Oni.Program.Main (System.String[] args) [0x00000]  (1)

EdT

Im pretty sure the problem is that it cant find the textures. Gumby

Yep, you're right, this is very likely caused by missing textures. All AKEV related textures need to be in the same directory as the AKEV .oni file. Sheeesh, I really need to check for that and provide a meaningfull error message, right now it just crashes :)Neo
Or allow us to export geometry without exporting the textures. :p Gumby 08:47, 25 July 2009 (UTC)
Moving the sub level0 folders, (Textures, Characters, etc) into the level0_Final folder fixed the AKEV issue. However, exporting ONCC as obj does not include the textures and exporting as dae gets an error message (same issue with missing textures and animations). The fix is to move the level0_Textures and level0_Animations folders into the level0_Characters folder. (Though only those who are interested in 3D modeling would need this info) EdT

Change Log (out of date)

OniSplit version: OniSplit v0.9.52

What's new:

  • When a TRBS file is exported to xml the geometry is exported to separate .dae files, one .dae file for each LOD
  • New -anim-body option. This allows a particular body (ONCC or TRBS) to be specified when exporting animations:
  onisplit -extract:xml out -anim-body:ONCCbarabus.oni TRAMsomething.oni
  • New -recurse option for the xml exporter. Have fun :)
  onisplit -extract:xml out -recurse ONCCbarabus.oni
  • Changed light color in the environment importer to white (it used to be blueish)
  • New -env-notxmp option. This prevents the automatic creation of TXMP files while importing the environment.
  • Made -normals work when importing TRBS from xml + dae files.
  • Fixed the Collada importer to work with 3DSMax exported files

OniSplit version: OniSplit v0.9.40

What's new:

  • support for exporting/importing sound animations to/from xml files
  • better Collada export for environment
  • support for full color transparent textures (-format:bgra32 on the command line, ARGB8888 format in an xml file)
  • different (hopefully better) xml export format for animations (this one is actually from 0.9.38 but since that wasn't mentioned here...)
  • a more or less complete animation importer. This one deservers some notes:
-unlike other importers that produce .oni files this one produces and .xml file (similar to the one you get when exporting a TRAM)
when you do
 onisplit -create:tram target_dir animation.dae
in the target dir you'll get a TRAManimation.xml file.
You need to add some stuff to that file to make it actually work as an animation. In particular the animation type, from/to states and varient needs to be set.
-For all I know this works with animations exported from Oni and modified in Softimage. If you come up with a completly new animation it should work as long as the skeleton is similar to the one used in Oni.
-Note that the geometry that is present inside the Collada file is used to compute the "vertical extents" so it better be the same or close to the one the animation is intended for.
-The biggest problem are the attacks. While it's not difficult to add attacks to the xml file, computing the necessary "extents" is not going to be easy. I guess in the end I'll have to add some command to OniSplit to do it.
-Everything else that I forgot :)

Neo

New OniSplit version: OniSplit v0.9.37

What's new:

  • support for transparency in the environment importer


New OniSplit version: OniSplit v0.9.35

What's new:

  • conversion of recorded films (.dat binary files) to xml files that can be used to create FILM .oni files
   OniSplit film2xml out_dir film.dat


New OniSplit version: OniSplit v0.9.34

What's new:

  • SNDD importer
-WAV files (.wav, mono/stereo, 22.05KHz/44.1KHz, uncompressed(PCM)/compressed(MS-ADPCM)) produce SNDD files that are compatible with Oni PC retail.
-AIFC files (.aif/.aifc/.afc, mono/stereo 22.05KHz, compressed(ima4)) produce SNDD files that are compatible with Oni Mac.
Example


 OniSplit -create out_dir test.aif
 OniSplit -create out_dir test.wav


  • LOD support for creating TRBS files. This can be done by creating an xml file containing the following:
 <?xml version="1.0" encoding="utf-8"?>
 <Oni Version="0.9.29.0">
     <Instance id="0" type="TRBS">
         <Elements>
             <Link>barabus_body_1.dae</Link>
             <Link>barabus_body_2.dae</Link>
             <Link>barabus_body_3.dae</Link>
             <Link>barabus_body_4.dae</Link>
             <Link>barabus_body_5.dae</Link>
         </Elements>
     </Instance>
 </Oni>
and running the command (assuming the created xml file's name is barabus_body.xml):
 OniSplit -create out_dir barabus_body.xml
It's not strictly necessary to create 5 different geometries for each LOD. The following works just as well:
 <?xml version="1.0" encoding="utf-8"?>
 <Oni Version="0.9.29.0">
     <Instance id="0" type="TRBS">
         <Elements>
             <Link>barabus_body_1.dae</Link>
             <Link>barabus_body_2.dae</Link>
             <Link>barabus_body_2.dae</Link>
             <Link>barabus_body_2.dae</Link>
             <Link>barabus_body_3.dae</Link>
         </Elements>
     </Instance>
 </Oni>


  • An xml file can contain "links" to other xml/obj/dae files. For example you can have the following line in an ONWC xml file:
 <Geometry>pistol.obj</Geometry>
Assuming the file pistol.obj exists in the same directory an M3GM .oni file will be automatically created from it.
Relative paths work just as well:
 <Geometry>geometry/pistol.obj</Geometry>


  • The -create:subt, -create:txmp and -create:m3gm are sort of obsolete. They still work but now you can simply use '-create' (or just 'create'):
 OniSplit -create out_dir crate.dae
 OniSplit create out_dir -format:bgr555 -genmipmaps pic.tga
 OniSplit create out_dir subtitles.txt


  • Work in progress: the AKEV importer now reads Collada materials so the resulting AKEV is textured.
Sample levels:
TestLevel1 -- This level should look like this in-game: Image 1 Image 2 Image 3
TestLevel2 -- This level should look like this in-game: Image 1
A zip file contains the minimum needed to get a new level running in Oni. To "compile" a level extract it to a folder and run the following commands:
 OniSplit -create out -genmipmaps -format:dxt1 *.xml
 OniSplit -import:nosep . Oni\GameDataFolder\level1_Final.dat
(Of course, you need to change the output .dat file path to match your Oni installation path)
Note1: The hexagon level needs to be scaled up to work properly. Use the envscale option for this:
 OniSplit -create out -genmipmaps -format:dxt1 -envscale:40 *.xml
Note2: I've updated the level files to contain 20 empty corpses to prevent crashes.