User talk:Neo: Difference between revisions

From OniGalore
Jump to navigation Jump to search
(Moving TRBS discussion to OniSplit talk page.)
m (marked dead link)
 
(432 intermediate revisions by 13 users not shown)
Line 1: Line 1:
:Hi Neo,
'''Talk page archives''': [[User_talk:Neo/Archive1|#1]] - [[User_talk:Neo/Archive2|#2]] - [[User_talk:Neo/Archive3|#3]] - [[User_talk:Neo/Archive4|#4]] - [[User_talk:Neo/Archive5|#5]]
:We ([[User:Geyser|geyser]] and [[User:Admin|Alloc]]) are positively impressed by your recent contributions to the "OBD" knowledge database. Wow.
:What kind of activity (professional, Oni-related) has led you to such expertise? What tools do you use to analyse Oni?
:[[OBD:OUP|OUP]] could use some expert OBD knowledge right now: we'd like to produce a fully functional release Soon(TM).
:Would you consider private dialogue with us (mail, ICQ)? (about [[OBD:TXMP|TXMP]] and recurrent data types)
::[[User:Geyser|geyser]] 03:09, 6 March 2007 (CET)


:Hi guys,
Hi Neo, In the latest oni split 0.9.55, there seems to be a problem with converting ONCC files,  
:What's so much to be impressed, I just added some matrices here and there (mostly) ! :)
It fails to convert ONCC.xml files made by earlier to oni files .. says something about jump fields, the ONCC xml created by older versions are different from the ones created by this one, different fields <Jump Constants> and <Air Constants> instead of <Physics>, that would be ok we could switch to the new layout. However onisplit v.55 also fails to convert ONCC.xml it created back to oni. .. convert any ONCC.oni to xml, try to convert that xml back to oni, it fails.
:I've been digging through Oni binary files for some time now (I think it was the summer of 2002 when I opened a dat file in a hex editor out of curiosity and when I saw all this TXMP, PNTA, IDXA, M3GM etc. stuff I thought that maybe I can get something out of this binary format). While I'm not a game developer I have a bit of a passion for 3D stuff so I learned a bit of Open GL and a bit more of Direct 3D so I'm quite familiar with transforms, quaternions, textures etc.
:As for used tools: much like anyone else I think. A hex editor, Excel for some things, SQL Server (database) for some others, Visual Studio (while it's file hex editor is quite dull it has a cool memory view in debug mode (you can set the number of displayed columns and the data type to display (integer/float, decimal/hexadecimal, 1/2/4 bytes). Obviously since this was in debug mode I had a program that loaded the DAT file into memory and where I could select a "file" (for various reasons I happened to call them "resources"). In addition I sometimes used a disasembler (home made, don't ask what it is) to stare at some things inside the executable :). Last but not least I have a "viewer" for a bunch of things from Oni (texures, 3D models, animations, environment). Good to test things like what I added to OBAN and OBOA file formats.
:As for mail/messenger (MSN or Yahoo) I guess it's OK but I don't feel like posting my mail address in here, it's a public place... any ideas ?
:;Neo
:OK, we won't ask you about your home-made disassembler ^^, but the ''viewer'' definitely sounds nice.
:Viewers (and exporters/importers) for things other than TXMP is what [[OBD:OUP|OUP]] currently lacks.
:Needless to say, we'd like to see those (is it C/C++?) and with any luck integrate them with OUP... ^^
:As for contact, ''our'' coordinates are available (just click our sigs). My YIM alias is '''serguei_mechkov'''.
::[[User:Geyser|geyser]] 02:53, 7 March 2007 (CET)
:I only have a few more doubts about the TXMP format. Will experiment a little tomorrow night.
::[[User:Geyser|geyser]] 02:53, 7 March 2007 (CET)
:Your homemade tools remind me of someone from the previous {{OCF}}... Have we met? ^^
::[[User:Geyser|geyser]] 02:53, 7 March 2007 (CET)


:Nope, we had not met before. As for viewer I intend to make it available but not right now, I kept doing experiments with it for the last 2 weeks or so and the whole source looks like after a war. The current one is written in C#, I also have one that is written in C++ but it has not been updated in a while so it lacks/gets wrong some things. I'll add you to my YIM list and you can ask for more details there, I'm not familiar with this wiki stuff to write too much... :) [[User:Neo|Neo]]
2- It is also unable to convert a TRAM.oni file made from a dae by older versions back to xml : Operation is not valid due to current state of object. (containing QKEYS) while 0.941 is able to convert them.


----
reported by Samer on July 10 2011


I've tried to run your Onibrowser several times, but I've failed. The test system is a laptop with WinXp + SP2, .NET 2.0 and XNA 1.0. When I doubleclick on the exe the harddisk makes only some noise for some seconds. That's it. Nothing else happens. No error message, no window. Nothing. Any idea what's wrong?


Can you add some code to the vtuneapi.dll that draws the trigger volumes (volume color: red, opacity: 10%)?


[[User:Ssg|Ssg]] 12:40, 22 December 2007 (CET)
Hi Neo, a bug has been ecountered by me in OniSplit's xml export. The bug applies on versions 0.9.50.0 and 0.9.52.0. If exported TRAM file has direct animation links, only the second direct link is written into XML file. The first direct link is ignored (is always an empty element).
1. Hmm, that's unusual. Things to check:
- make sure you run it from the local disk and not from a network share
- make sure you have the correct xna version installed. The latest OniBrowser uses this
[[http://www.microsoft.com/downloads/details.aspx?FamilyID=a7da4763-6807-4bd5-8d18-18c60c437f93&DisplayLang=en|XNA Framework 1.0 Refresh]]. Previously there was another 1.0 version (without Refresh in title) but that was removed from download.
- update DirectX


If nothing works take a look in the event viewer, maybe there is something about failing to start (go to Control Panel, Administrative Tools, Event Viewer, Application Log).  
This is an excerpt from KONCOMcomb_p_p XML file as created by OniSplit 0.9.52.0:
        <DirectAnimations>
            <Link />
            <Link>TRAMKONCOMcomb_p_p_k</Link>
        </DirectAnimations>


2. I suppose it is possible but I'm not sure what it takes. Besides, I already did this for OniBrowser so I'll try to post a new version of OniBrowser one of these days.
It should be:
        <DirectAnimations>
            <Link>TRAMKONCOMcomb_p_p_p</Link>
            <Link>TRAMKONCOMcomb_p_p_k</Link>
        </DirectAnimations>


[[User:Neo|Neo]]
Binary (*.oni) files contain both direct links. Exported XML files don't. Since usually only the first direct link is used, this bug poses quite a nuisance. Thank you in advance.


The DirectX update was helpful. Now it works. Thank you.  
: It might be that the binary (oni/exe) are corrupted. My version of TRAMKONCOMcomb_p_p.oni was correctly extracted with onisplit 52. --[[User:Paradox-01|paradox-01]] 19:00, 8 July 2011 (CEST)


[[User:Ssg|Ssg]] 14:45, 23 December 2007 (CET)
While I'm here I will take the chance to also ask something. I'm trying to create a combo. The animations work fine with animation type Kick, Kick2, Kick3 but not with KickRight, KrKr*, KrKrKr**. Could it be that those* animation types are dead? I hope you will find out what's wrong. --[[User:Paradox-01|paradox-01]] 19:00, 8 July 2011 (CEST)


2 again. Here's an updated [http://cid-639aa31296681bfe.skydrive.live.com/self.aspx/Oni/OniBrowser.zip OniBrowser] that shows trigger volumes, flags and sounds. You need to upgrade to [http://www.microsoft.com/downloads/details.aspx?FamilyID=15fb9169-4a25-4dca-bf40-9c497568f102&DisplayLang=en XNA 2.0].
: Loser: The problem more than likely was the fact that the TRAMKONCOMcomb_p_p_p.oni was not in the same directory as  TRAMKONCOMcomb_p_p. To test, I removed TRAMKONCOMcomb_p_p_p.oni and got the same result as you did, added it back and got the correct output. OniSplit wants all the files to be in the same directory.  [[User:EdT|EdT]] 23:36, 8 July 2011 (CEST)


[[User:Neo|Neo]]


Does not work. I've installed XNA 2.0 but nothing happened. Again no error message and no window. The strange thing is that the "old" version of OniBrowser doesn't work with XNA 2.0 too. It needs XNA 1.0. So any ideas what's wrong with the current OniBrowser version?


[[User:Ssg|Ssg]] 15:50, 3 January 2008 (CET)
----


Oops... I forgot a file. Please [http://cid-639aa31296681bfe.skydrive.live.com/self.aspx/Oni/OniBrowser.zip redownload]


[[User:Neo|Neo]]
Neo, do you think we can have something like a -nodeps argument added to OniSplit? We could use a way to prevent the program from automatically following all dependencies when exporting files like ONCCs to XML. --[[User:Iritscen|Iritscen]] 14:26, 6 July 2011 (CEST)
:Oops, never mind, it sounds like this is already OniSplit's default behavior.... --[[User:Iritscen|Iritscen]] 16:24, 6 July 2011 (CEST)


Doesn't work either. Same result as above. The "old" version has a XPtheme.dll. Maybe that's the problem? (I've copied it to the folder with the current version but no success.)
-----
Pathfinding issue fixed, though it seems to be still slightly off:


[[User:Ssg|Ssg]] 17:36, 3 January 2008 (CET)
[[Image:junkyard_PFG.jpg]]


I'm out of ideas. The last zip missed Oni.Files.dll so check if you got it now. XPTheme.dll is old, not needed anymore. Try to take a look in the event viewer for an error about Oni.Browser.exe.
There is still the issue of falling through the ground.


[[User:Neo|Neo]]
level files are here: http://edt.oni2.net/testlevel/junkyard.zip


The event viewer gaves  me an error message: "Couldn't find Microsoft.VC80.CRT". I've googled a bit and it looks like a general problem for Vuisal C/C++ programs. So please search the net for "VC80.CRT" to solve this problem. (Microsoft MSDN help: http://msdn2.microsoft.com/en-us/library/ms235342(vs.80).aspx )
[[User:EdT|EdT]] 03:14, 18 June 2011 (CEST)


I've installed the "Microsoft Visual C++ 2005 Redistributable Package (x86)" (http://www.microsoft.com/downloads/details.aspx?FamilyId=32BC1BEE-A3F9-4C13-9C99-220B62A191EE&displaylang=en ) but it didn't help.


[[User:Ssg|Ssg]] 22:00, 3 January 2008 (CET)


Stupid me, I tend to forget that XNA is actually written in C++ and it needs that. Now the only problem is that you need the [http://www.microsoft.com/downloads/details.aspx?familyid=200B2FD9-AE1A-4A14-984D-389C36F85647&displaylang=en SP1 C++ redist]. You were close :) .
Hi Neo,


[[User:Neo|Neo]]
I was able to create the pathfinding grids, however, they are offset from the geometry. Also, there is a spot where you will fall through the ground.


Hooray. It works. Thank you. And yes, I was really close. It was a fifty-fifty chance and I chose the wrong. As usual. (Grrrr... Murphy... just you wait!)
[[Image:junkyard.png]]


I would like to take screenshots as in Oni (screenshot+number.bmp). Do you think you can add such a feature? And can you make your program run in real fullscreen?
The bnv itself is correct:


[[User:Ssg|Ssg]] 02:27, 4 January 2008 (CET)
[[Image:junkyard_bnv.png]]


Is there a way to switch the visibility of the flags/sounds/tvs on/off in general and separate?
Here are my files: http://edt.oni2.net/testlevel/TestLevel.zip


[[User:Ssg|Ssg]] 02:35, 4 January 2008 (CET)
EDIT: Tested OniSplit with the arena level data: <nowiki>http://mods.oni2.net/system/files/80200ArenaofHurt.zip</nowiki>
Extracted the AKEV, then used create:akev to import the level.  The pathfinding grids were offset from the geometry and there were areas where the player will fall through the floor.


oh, a new version - gonna check it out
[[User:EdT|EdT]] 01:03, 17 June 2011 (CEST)


[[User:Kuchumovn|Kuchumovn]] 11:31, 4 January 2008 (CET)
-----


*screenshots - I think I can add such a thing but isn't pressing Print Screen key enough?
*fullscreen - ha ha... old versions did that, I think I can restore that functionality easily.
*flag/sounds/tvs visibility - not yet, wanting to do it this weekend


[[User:Neo|Neo]]


*screenshots: I would like to create an overview of all TVs. It's not very handy to do that with the Print Screen key. That's why I've asked for a screenshot-shortcut.
Hi Neo,
I have tried Your ".dae" to ".xml" animation importer. I keep getting message ".dae files cannot be imported as TRAM". Can you tell me please where is the problem? Thank you. --[[User:Loser|Loser]] 13:00, 11 July 2010 (UTC)


[[User:Ssg|Ssg]] 18:22, 4 January 2008 (CET)
Hello, to import an animation you need an xml file and a dae file. If you try to export a TRAM to xml you get both files and when importing you need to provide the xml file, not the dae file. The dae file is referenced from inside the xml file (see the DaeImport element) [[User:Neo|Neo]]


Updated [http://cid-639aa31296681bfe.skydrive.live.com/self.aspx/Oni/OniBrowser.zip OniBrowser]


* fullscreen - F11 key
New OniSplit version: OniSplit v0.9.52 (<nowiki>https://cid-639aa31296681bfe.skydrive.live.com/self.aspx/Oni/OniSplit/OniSplit%5E_v0.9.52.zip</nowiki>, dead link)
* screenshot - F12 key
* toggle flags visibility - F5
* toggle sounds visibility - F6
* toggle trigger volumes visibility - F7


[[User:Neo|Neo]]
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:


Coooooooool... thank you very much.
  onisplit -extract:xml out -anim-body:ONCCbarabus.oni TRAMsomething.oni


[[User:Ssg|Ssg]] 20:49, 5 January 2008 (CET)
:* New -recurse option for the xml exporter. Have fun :)
:"screenshots: I would like to create an overview of all TVs"
:What's the point of creating an overview if we'll edit them?
:I mean, TVs are about the first thing we'll hack Very Soon.
::[[User:Geyser|geyser]] 23:23, 5 January 2008 (CET)


Maybe there're people out there who like to create scripts for the original game?
  onisplit -extract:xml out -recurse ONCCbarabus.oni


Btw: Very Soon (TM)? Is that the same soon as [http://geyser.oni2.net this]? :p
:* 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.


[[User:Ssg|Ssg]] 02:23, 6 January 2008 (CET)
New OniSplit version: OniSplit v0.9.41


:@ VerySoon(TM): I suppose you haven't tried the Edition?
What's new:
::The COMING SOON thing is more like an inside joke now.
:::I don't know why I didn't remove the index.php page ^_^
:The original TVs are quite unusable for custom logic.
::There are partial workarounds, but it's still a pain.
:::The future belongs to custom-matched TVs and scripts.
:But it's OK if you want to do the overview, of course.
::Maybe it will help people get familiar with TV setup.
:And ''then'' maybe they'll start modding BINA, who knows?
::[[User:Geyser|geyser]] 21:27, 6 January 2008 (CET)


:* fixed the Collada importer to work with 3DSMax exported files


----
New OniSplit version: OniSplit v0.9.40


:hi, Neo
What's new:
:while porting your TRAM viewing code i noticed that there is some kind of jitter in model animations (for example look at barabas' rocket animation (level 0) - feet are some kind of jittering)
:also you use LERP method in your code
:i haven't found it in the internet, but i found SLERP - i guess it is the same
:so, do you have any ideas why do animations jitter?
:or am i just paranoiac?
::[[User:Kuchumovn|Kuchumovn]] 11:02, 9 January 2008 (CET)
 
jitter: no idea, I don't see anything wrong with that animation


quaternion:
:* support for exporting/importing [[OBD:BINA/SABD|sound animations]] to/from xml files
*lerp = linear interpolation in a 4D space
:* better Collada export for environment
*slerp = linear interpolation on a sphere
:* support for full color transparent textures (-format:bgra32 on the command line, ARGB8888 format in an xml file)
They are not the same mathematically but I didn't notice "visual" differences between using one or the other. Oni uses lerp (slerp needs some trigonometric functions so it will slow down things probably) so I did the same.
:* 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 :)


[[User:Neo|Neo]]
[[User:Neo|Neo]]


:thanks
New OniSplit version: OniSplit v0.9.37
::[[User:Kuchumovn|Kuchumovn]] 13:06, 9 January 2008 (CET)


:about the animations jitter: [http://www.youtube.com/watch?v=NwXPqqX4mO8 youtube]
What's new:
:i don't really care, just maybe you have encountered something like this
::[[User:Kuchumovn|Kuchumovn]] 22:06, 13 January 2008 (CET)


Hmm... it's like I'm looking at that video ten times and the tenth time I think I'm seeing some jittering when he is landing. As for possible reasons, I don't know. The animation itself can have problems, there maybe a bug in the code (though I have checked it and it looks correct) or all the computations needed to get the final transform matrices combined with floating point (im)precision generate errors.
:* support for transparency in the environment importer


[[User:Neo|Neo]]


:seems that these are calfs and arms who cause the jitter
New OniSplit version: OniSplit v0.9.35
:actually i haven't found a 3D math library in java, so i have grabbed different sources from the web - maybe there are some errors that cause the jitter
:thanks for your feedback
::[[User:Kuchumovn|Kuchumovn]] 00:37, 15 January 2008 (CET)


Hmm... I looked at your math/animation code and I seems correct. What is the name of the animation from your video anyway?
What's new:


[[User:Neo|Neo]]
:* conversion of recorded films (.dat binary files) to xml files that can be used to create FILM .oni files


:the animation in the video is "Muro Combat Crouch Forward" from level 13 - it looks correct in OniBrowser
    OniSplit film2xml out_dir film.dat
:a lot of animations jitter (heavy kicks and slow punches)
:yesterday i've found out that if i disable parent transformation for arms and calfs, jitter doesn't appear
:i'm gonna test it today in more details
::[[User:Kuchumovn|Kuchumovn]] 13:39, 15 January 2008 (CET)


:i have also just saw that there is a field "FPS"
----
:i placed it into the realTimeFrame formula, and now, i think, the resulting animation is quite appropriate, especially if you are playing a game
Neo
:so i think we are done - let it be an openGL_driver/video_card issue for now (so that it won't cause nightmares)
::[[User:Kuchumovn|Kuchumovn]] 17:45, 15 January 2008 (CET)
 
Neo, geyser mentioned that OniSplit can export TXMP out as image files.  Can you tell me the command to do so, I would like to try it.
 
Thanks EdT


Yes, it can though currently it's a bit more complicated than it needs to be. You need first to export a .dat file to .oni files and then export images from those .oni files.
I get this error message using the command create:tram


*onisplit -export:TXMP* destination_directory_for_oni_files source_dat_file
  System.NotSupportedException: Invalid rotation axis {X:0 Y:0 Z:-1} for rotate transform in animation pelvis-node-ry
*onisplit -extract:png directory_with_oni_files/TXMP* destination_directory_for_image_files
  at Oni.Totoro.AnimationDaeReader.FindRotations () [0x00000]
  at Oni.Totoro.AnimationDaeReader.Import (System.String filePath, System.String outputDirPath) [0x00000]
  at Oni.Program.CreateGeneric (System.String[] args) [0x00000]
  at Oni.Program.Main (System.String[] args) [0x00000]  (1)


[[User:Neo|Neo]]
The dae files are here: <nowiki>http://www.filefront.com/14507129/dae.rar</nowiki> (dead link)


New OniSplit version that make extracting easier: OniSplit v0.8.8
xml animation file here: <nowiki>http://www.filefront.com/14507115/ID%20walking.xaf</nowiki> (dead link)


onisplit -extract:png destination_directory_for_image_files source_dat_file
Thanks [[User:EdT|EdT]]


TGA and DDS are also supported using -extract:tga and -extract:dds.
Yep, caused by Z-up. I'll see what I can do.


[[User:Neo|Neo]]
[[User:Neo|Neo]]


Neo, I got an error with the link to the latest OniSplit.
Hi Neo,
 
[[User:EdT|EdT]]
 
Oops, I ate a -. Link fixed.


[[User:Neo|Neo]]
When you have time, can you take a look at this:


Got it.
[[Image:TRBSproblem.jpg]]
I now get error message with OniSplit: (I'm on Mac OSX 10.4.11 using Mono project)
  Reading file /Oni/GameDataFolder/level0_Final.dat
  Exporting to /Oni/TXMPfiles


  System.TypeInitializationException: An exception was thrown by the type initializer for System.Drawing.GDIPlus --->
When I use the latest FBX Converter 2010.2 to convert FBX to DAE, I get this problem. However, when I use an older version, it works fine. Here are the DAEs from both version: http://edt.oni2.net/temp/TRBSproblem.zip G2 is uses the new version, G1 uses the old.
  System.DllNotFoundException: /Library/Frameworks/Mono.framework/Versions/1.2.5.1/lib/libgdiplus.dylib
  at (wrapper managed-to-native) System.Drawing.GDIPlus:GdiplusStartup (ulong&,System.Drawing.GdiplusStartupInput&,System.Drawing.GdiplusStartupOutput&)
  at System.Drawing.GDIPlus..cctor () [0x00000] --- End of inner exception stack trace ---


  at <0x00000> <unknown method>
Thanks [[User:EdT|EdT]]
  at System.Drawing.Bitmap..ctor (Int32 width, Int32 height, PixelFormat format) [0x00000]
  at System.Drawing.Bitmap..ctor (Int32 width, Int32 height, PixelFormat format) [0x00000]
  at (wrapper remoting-invoke-with-check) System.Drawing.Bitmap:.ctor (int,int,System.Drawing.Imaging.PixelFormat)
  at Oni.Files.Imaging.PngFile.Write (System.String filePath) [0x00000]
  at Oni.Files.Imaging.ImageExporter.Export (Oni.Files.FileManager fileManager, System.String sourceFilePath, System.String outputDirPath, System.String prefix) [0x00000]
  at Oni.Files.Program.ExportTextures (System.String[] args) [0x00000]
  at Oni.Files.Program.Main (System.String[] args) [0x00000]  


  Unhandled Exception: System.TypeInitializationException: An exception was thrown by the type initializer for
Oh boy, the new converter uses matrix transforms instead of individual scale/rotate/translate transforms. I'll see what I can do...
  System.Drawing.GDIPlus ---> System.DllNotFoundException: /Library/Frameworks/Mono.framework/Versions/1.2.5.1/lib/libgdiplus.dylib
  at (wrapper managed-to-native) System.Drawing.GDIPlus:GdiplusStartup (ulong&,System.Drawing.GdiplusStartupInput&,System.Drawing.GdiplusStartupOutput&)
  at System.Drawing.GDIPlus..cctor () [0x00000] --- End of inner exception stack trace ---
 
  at <0x00000> <unknown method>
  at System.Drawing.Bitmap..ctor (Int32 width, Int32 height, PixelFormat format) [0x00000]
  at System.Drawing.Bitmap..ctor (Int32 width, Int32 height, PixelFormat format) [0x00000]
  at (wrapper remoting-invoke-with-check) System.Drawing.Bitmap:.ctor (int,int,System.Drawing.Imaging.PixelFormat)
  at Oni.Files.Imaging.PngFile.Write (System.String filePath) [0x00000]
  at Oni.Files.Imaging.ImageExporter.Export (Oni.Files.FileManager fileManager, System.String sourceFilePath, System.String outputDirPath, System.String prefix) [0x00000]
  at Oni.Files.Program.ExportTextures (System.String[] args) [0x00000]
  at Oni.Files.Program.Main (System.String[] args) [0x00000]
 
[[User:EdT|EdT]]
 
Umm... that's unexpected. I'm not sure what is wrong and if I can fix it. Can you use TGA files (-extract:tga)?


[[User:Neo|Neo]]
[[User:Neo|Neo]]


I tried on another machine Intel Mac OSX 10.5.1
I can extract .png and .tga but image is scrambled, here is one example of TXMPoni_kanji_1.png
http://edt.oni2.net/OniSplit/TXMPoni_kanji_1.png


[[User:EdT|EdT]]
----
 
He he... it looks nice :). I forgot that Mac .dat files are different. Here's a fixed version: OniSplit v0.8.9
 
[[User:Neo|Neo]]
 
Success! I can extract and view .tga versions of the TXMP, but somehow .png causes the terminal to hang.  It say exporting, but nothing happens. no error message. I waited several minutes but still nothing happens. (tga extraction is very quick) Very strange.
 
I was able to add the command to an application I'm making for the 7th Anniversary Edition.


Also, do you have plans to allow importing of TXMP?
The Iron Demon walks! Sorta...


I think that would be very useful, especially for Mac users.  Since the current programs such as OUP are not Mac compatible.  If it could be something like importing TXMPBOSS1talking.tga and then converting it to TXMPBOSS1talking.oni.
You can see the video here: http://edt.oni2.net/ID/IDwalk.wmv
Then it would be a simple matter of recompiling level0 into the .dat, .raw and .sep files.


Finally, can you tell me the list of commands in OniSplit?
I converted the files from Bobbysoon (TRAMID_run1stepb.DAE, TRAMID_runstart.DAE, TRAMID_runstop.DAE) to xml.  The XML gave the pelvis height as <Height>-2175.5</Height>, so I removed the negative and divided the height by 100.  But as you can see, the model floats above the ground.  Also, the velocity has some large numbers in the first part <Velocity>-4.076141 0</Velocity> I think that is the cause of the ID moving sideways not forward.


Thanks so much.
Files here: http://edt.oni2.net/ID/ID_Files.zip


[[User:EdT|EdT]]
[[User:EdT|EdT]]


*PNG issue: It seems that Mono's graphics library has some problems on OS X because I can export png files from Mac .dat files using Mono on Windows without problems. I'll see what can I do about it though I don't feel like writing my own png compression code :).
:Ha ha, that's going in my album of weird modding results. Anyway, I didn't even realize that animations were supposed to work yet, I thought we were waiting for an update to OniSplit. --[[User:Iritscen|Iritscen]] 14:33, 29 November 2009 (UTC)
*Importing TXMP: Yes, I'm working on it.
*For a list of commands use the -help option:  
OniSplit -help
There are 2 additional options for -extract that are not listed. They are intended to extract M3GM and other 3D stuff to Wavefront OBJ (-extract:obj) and Collada (-extract:dae) file formats. They are not complete and they may have bugs.


[[User:Neo|Neo]]


Don't worry about the .png issue, Mac users can extract as .tga and edit the files.
----
I'm looking forward to when we can import TXMP.


Thanks for your great work.
Hi Neo,


[[User:EdT|EdT]]
Having problems converting DAEs to trams.  I put all the files in a zip and included a ReadMe with the description of the errors. <nowiki>http://edt.oni2.net/temp/NeoTRAM.zip</nowiki>


I tried out the extract obj on a Mac and got this:
I was trying to make new animations, whenever you have time, please take a look.  Thanks [[User:EdT|EdT]]


mono onisplit.exe -extract:obj ../../OBJfiles ../../GameDataFolder/level0_Final.dat
Reading file /Oni/GameDataFolder/level0_Final.dat
Exporting to /Oni/OBJfiles
Illegal instruction


Also, can you please keep me posted whenever you update OniSplit, then I can test it on the Mac for you.
----
 
Hmm... I just discovered that I can't export TXMPs from a .dat file to the PNG format. I am attempting to use the -extract:png command on a virgin .dat file. The -extract:tga options works fine, but the -extract:png option gives:
[[User:EdT|EdT]]
System.TypeInitializationException: An exception was thrown by the type initializer for System.Drawing.GDIPlus --->  System.DllNotFoundException: gdiplus.dll
  at (wrapper managed-to-native) System.Drawing.GDIPlus:GdiplusStartup (ulong&,System.Drawing.GdiplusStartupInput&,System.Drawing.GdiplusStartupOutput&)
  at System.Drawing.GDIPlus..cctor () [0x00000]
  --- End of inner exception stack trace ---
  at System.Drawing.Bitmap..ctor (Int32 width, Int32 height, PixelFormat format) [0x00000]
  at (wrapper remoting-invoke-with-check) System.Drawing.Bitmap:.ctor (int,int,System.Drawing.Imaging.PixelFormat)
  at Oni.Imaging.SysExporter.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.ExtractTextures (System.String[] args) [0x00000]
  at Oni.Program.Main (System.String[] args) [0x00000]
This occurred in both 0.9.38 and 0.9.41 on my Mac. I used to always extract TXMPs as TGA, so I don't know when this actually worked for me. --[[User:Iritscen|Iritscen]] 17:54, 2 January 2010 (UTC)


New OniSplit version: OniSplit v0.8.10
:TGA always works because it's all done in OniSplit. For PNG/JPG I'm using the framework (.NET/Mono) and Mono seems to have a problem. [[User:Neo|Neo]]


I did not look into that "illegal instruction" thing yet but I added a texture import option:
:I just tested it myself and I was able to extract all the textures from a virgin .dat file as PNG.  I'm using the latest version 0.9.45 and the latest Mono framework.  OSX 10.5.8 and 10.6.2 [[User:EdT|EdT]]


onisplit -create:txmp destination_directory [options] source_image_file
::Okay, after many aborted attempts at updating mono (I was running 2.0.1) by building from source or using their binary installer, I realized that the installer was putting the files in some meaningless directory, and I ended up copying them to the right system directories, hoping I didn't overwrite libraries that were supposed to stay unchanged. Who knows what the consequences will be down the road for other stuff, but OniSplit now exports PNGs properly for me! --[[User:Iritscen|Iritscen]] 20:28, 3 January 2010 (UTC)


where options can be
----
*-nouwrap - set the "U wrapping disabled" flag
Observations of importing TRAMs to XSI.
*-nowwrap - set the "V wrapping disabled" flag
*-format:bgr32, -format:bgra32, -format:bgr555, -format:bgra5551, -format:bgra4444, -format:dxt1 - the texture format to generate
*-genmipmaps - generate mipmaps if they are not already present in the source file and if the source file is not dxt1 compressed


Example:
Sometimes, imported TRAMs will have odd rotations mainly related to the pelvis and thighs.  Here is one example, the Striker's walking TRAM:
http://edt.oni2.net/TRAMS/WalkOS.wmv  As you can see the pelvis and thighs are rotating in an odd fashion.  This is due to euler vs quaternion rotations.  To see it correctly in XSI, you can use the option to "Convert Euler Rotation to Quaternion" on the pelvis and thighs, then the animation appears correct: http://edt.oni2.net/TRAMS/WalkQT.wmv  However, when importing a converted animation back to Oni, you get this result: http://edt.oni2.net/TRAMS/WalkOni.wmv


onisplit -create:txmp imported -format:dxt1 -genmipmaps tga\concrete.tga
When a TRAM is imported to XSI, to "unwrap" a model from the default animation state, the right thigh is rotated 180 on the X axis and -180 on the Z axis, the left is rotated -180 on the X and -180 on the Z axis. Somehow, from this starting point, whenever XSI moves the thigh from a negative to a positive angle (or in the case of this example from positive to negative), the part would rotate the long way around as shown here: http://edt.oni2.net/TRAMS/ThighXZaxis.wmv


Notes:
One workaround is to insert keyframes to cause the animation to rotate in the correct direction.
*I haven't seen any TXMP that use format bgra32 but it should work with Oni. Did not tested it yet.
*DXT1 compression is kind of lousy (lousy not lossy :)).
*source_image_file can be dds or tga. "Color indexed" and "black and white" tga files are not supported currently. Other image file formats (png, jpg, bmp, tif) may work depending on Mono/.NET support for them.
*onisplit will automatically prepend TXMP to the output file name if the source file name does not start with TXMP already.


[[User:Neo|Neo]]
I found another approach that seems to work, if you are making an animation from scratch. That is to rotate the thighs down 180 on the Y axis.  So far in my testing, there are no odd rotations: http://edt.oni2.net/TRAMS/ThighYaxis.wmv


I will test it out as soon as I can and will report back to you.
The Striker DAE files and the XSI scene files are here: http://edt.oni2.net/TRAMS/TRAMfiles.zip
Thanks!


[[User:EdT|EdT]]
[[User:EdT|EdT]]


I forgot to ask you about that "illegal instruction" error. Can you post the full error mesage here?
I'm still unsure how the XZ animation was produced. There's a keyframe (for the Z rotation of left_thigh) that causes this. It's value is 135 while all the other keyframes for Z are well below 0 (-150..-180). If you move that keyframe to something like -215 then the animation works fine. Or so it appears to me...


[[User:Neo|Neo]]
[[User:Neo|Neo]]


First test with OniSplit .8.10, I get this error message
:That's true about changing the keyframe to -215, however, for all the TRAMs exported from Oni, the number for the rotations are always less than 180 or -180. When the thigh is positioned in front of the body, the rotation on the Z axis is negative, between the range of -0.x to -179.x and when it is positioned behind the body, the rotation number is positive, between the range of 0.x to 179.x. So my XZ animation was reflecting that aspect. [[User:EdT|EdT]]


  mono OniSplit.exe -create:txmp  ../../ModTXMP ../../ModTXMP/TXMPBOSS1nametag.tga
::Ah, I didn't think about that. I don't think it matters if those angles are between -180..180 or not, I haven't seen any problems while trying to import the animation with -215. [[User:Neo|Neo]]


  System.IndexOutOfRangeException: Array index is out of range.
:::Then my question is, would it be possible to program OniSplit one day, so that it can produce a TRAM DAE that will import into XSI without any of those odd rotations of the pelvis and thighs? Or for OniSplit to import a TRAM DAE that was converted from Euler to Quaternion rotation?  It will be much easier to modify existing TRAMs without having to deal with those odd rotations. Thanks [[User:EdT|EdT]]
  at Oni.Files.Imaging.Color.WriteBgra32 (Color color, System.Byte[] data, Int32 index) [0x00000]
  at Oni.Files.Imaging.Surface.SetPixel (Int32 x, Int32 y, Color color) [0x00000]
  at Oni.Files.Imaging.TgaReader.LoadRleTrueColor (Oni.Files.Imaging.TgaHeader header, System.IO.BinaryReader reader) [0x00000]  
  at Oni.Files.Imaging.TgaReader.Read (System.String filePath) [0x00000]
  at Oni.Files.Imaging.TextureImporter.LoadImage (System.String filePath) [0x00000]
  at Oni.Files.Imaging.TextureImporter.Import (System.String filePath, System.String outputDirPath) [0x00000]
  at Oni.Files.Program.CreateTexture (System.String[] args) [0x00000]
  at Oni.Files.Program.Main (System.String[] args) [0x00000]


::::TRAM DAE: yes, I think so. I have an idea though I've yet to test it. Euler to Quaternion: I don't know why that doesn't work, I'll check. In theory there should be no problem. [[User:Neo|Neo]]
::::Found another solution (in XSI): use "Make rotation keys continuous" (in the same menu as Euler to Quaternion). [[User:Neo|Neo]]
:::::I tested the it, however, TRAMs converted that way do not appear correctly in Oni: http://edt.oni2.net/TRAMS/WalkRot.wmv files:http://edt.oni2.net/TRAMS/TRAMfiles2.zip  [[User:EdT|EdT]]
:::::Not to say that this is the only problem but... you're .dae files for left and right are identical :) [[User:Neo|Neo]]
::::::"The Make rotation keys continuous"is working great, no problems.  Except for the stupid user error with the Striker's walk... lol [[User:EdT|EdT]]
::::::: Googled a possible solution and fitted it to one method. I have already checked it for some quaternions, which should result in euler angles, which contains values greater than 180 degrees, and it works fine. Here it is:
    public static Vector3 FromQ2(Quaternion q1)
    {
        float sqw = q1.w * q1.w;
        float sqx = q1.x * q1.x;
        float sqy = q1.y * q1.y;
        float sqz = q1.z * q1.z;
        float unit = sqx + sqy + sqz + sqw; // if normalised is one, otherwise is correction factor
        float test = q1.x * q1.w - q1.y * q1.z;
        Vector3 v;
        Func<float, float> NormalizeAngle = new Func<float, float>(angle =>
        {
            while (angle > 360)
                angle -= 360;
            while (angle < 0)
                angle += 360;
            return angle;
        });
        Func<Vector3,Vector3> NormalizeAngles = new Func<Vector3,Vector3>(angles =>
        {
            angles.x = NormalizeAngle(angles.x);
            angles.y = NormalizeAngle(angles.y);
            angles.z = NormalizeAngle(angles.z);
            return angles;
        } );
        if (test > 0.4995f * unit)
        { // singularity at north pole
            v.y = 2f * Mathf.Atan2(q1.y, q1.x);
            v.x = Mathf.PI / 2;
            v.z = 0;
            return NormalizeAngles(v * Mathf.Rad2Deg);
        }
        if (test < -0.4995f * unit)
        { // singularity at south pole
            v.y = -2f * Mathf.Atan2(q1.y, q1.x);
            v.x = -Mathf.PI / 2;
            v.z = 0;
            return NormalizeAngles(v * Mathf.Rad2Deg);
        }
        Quaternion q = new Quaternion(q1.w, q1.z, q1.x, q1.y);
        v.y = (float)Math.Atan2(2f * q.x * q.w + 2f * q.y * q.z, 1 - 2f * (q.z * q.z + q.w * q.w));    // Yaw
        v.x = (float)Math.Asin(2f * (q.x * q.z - q.w * q.y));                            // Pitch
        v.z = (float)Math.Atan2(2f * q.x * q.y + 2f * q.z * q.w, 1 - 2f * (q.y * q.y + q.z * q.z));      // Roll
        return NormalizeAngles(v * Mathf.Rad2Deg);
    }
p.s. sorry, not found any code tags or something like that.
p.s.s. Mathf.Rad2Deg must be 57.2958f. other Mathf stuff is similar to Math
p.s.s.s anyway, looks like the root of evil is not in quaternion -> euler conversion. i will try to investigate that.
[[User:TwinkerTinker|6opoDuJIo]]


Even when I add the options such as -format:dxt1 I still get the same message.
----


Now for the .obj:
Hi Neo,


  mono onisplit.exe -extract:obj ../../OBJfiles ../../GameDataFolder/level0_Final.dat
I have thought of adding a point to your todo list if you don't mind. Since the throw target is sort of reversed played in Oni (body rotated by 180 degrees, reversed movement, if I remember correctly), it would come handy if Onisplit can reverse it. Doing it in XSI would be a load of unnecessary work each time. Onisplit could easily recognize this special animation in the XML tags (<Flag>... ThrowTarget ...</Flag>). --[[User:Paradox-01|Paradox-01]] 15:21, 29 March 2010 (UTC)


  Reading file /Oni/GameDataFolder/level0_Final.dat
----
  Exporting 26 instances to /Oni/OBJfiles
Here's a mystery [which has been solved, see edits below this one]: what is wrong with Oni's sound occlusion with 44Khz sounds in Windows (and possibly all occlusion on Macs)? Here are two alternate versions of a package: <nowiki>http://iritscen.oni2.net/temp/06000MissingSoundsNoOcc.zip</nowiki> (dead link) and <nowiki>http://iritscen.oni2.net/temp/06000MissingSoundsOcc.zip</nowiki> (dead link). This package simply adds a sound to the gears at the end of Science Prison. There are probably any number of ways to test for this issue, but this is how I noticed the problem, so I can vouch for its reproducibility.
  Illegal instruction
# Install the Occ version of the package. This uses 22Khz sound.
 
# Load Science Prison SP1 so there's no music or enemies around, and do "chr_location 0 676.3 64.7 -1898.3". You're now on top of the gears.
The terminal just ends with the words "Illegal instruction"
# Run into one of the nearby rooms with windows. The sound comes from the point you teleported to, so position yourself so the "ray" from the sound can reach you through a window. If you are standing with part of the room's wall in the way, the sound may cut out completely, which you don't want.
 
# Listen to the sound. Isn't it soothing? Now shoot the glass out (the M. Bow is a nice choice, it's quiet so you can hear the gears more clearly). The sound should get louder. You can hear this in my movie <nowiki>http://iritscen.oni2.net/temp/GearsTestWindows.mp4</nowiki> (dead link) (though the gears sound was distorted at the time because I didn't set the .grp properly, that's besides the point in this case).
[[User:EdT|EdT]]
# Now replace the Occ package with the NoOcc package and install it. This one uses 44Khz sound.
 
# Performing the same test, you should hear the gears at the same volume through glass as without the glass in the way. You can hear this issue in my movie <nowiki>http://iritscen.oni2.net/temp/GearsTestMac.mp4</nowiki> (dead link). Obviously in the Mac test I was using 22Khz sound, and yet I experienced the same issue. I suspect something was changed in the occlusion code between the Windows and Mac releases, perhaps in tandem with the removal of 44Khz sound support, that glommed the Windows 44Khz bug onto the Mac 22Khz sound code.
TGA fixed: OniSplit v0.8.11
Stupid me, I did y-- instead of y++ :).
 
[[User:Neo|Neo]]
 
It sort of works. The TXMP comes out reversed horizontally and vertically.
It seems that the new image has to be the same size as original, otherwise I get a gray TXMP.
 
Also, if possible, can you include a command that will convert a single TMPX .oni file into a .tga?
Currently, I have to create new TXMP.oni file then put it in the level0 folder, then recompile level0 and then either play the game or again extract TXMP to see the result.


Thanks
Now, is it definitely a problem with Oni? I guess it is if we're sure that the sounds and .grp I provided are formatted and imported correctly. Or perhaps I'm totally mixed up here and don't know what I'm talking about. I've never done sound work before in Oni. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 15:36, 25 April 2013 (CEST)


EdT
: Iritscen: Try your test again with the command sound_show_debug=1 you will see a list of sounds and the sound level for each one.  When you are in front of the gears the level is 1 for gears, gears.aif .  Then move into one of the rooms behind the glass, the sound level will drop to around .6 or .7 depending on how far away you are.  Shoot out the glass and then the sound level will return to 1.[[User:EdT|EdT]] ([[User talk:EdT|talk]]) 17:02, 25 April 2013 (CEST)


*As far as I know it can convert a single .oni file to .tga. Did you tried?
::D'oh. I was wondering if I should have put this on Paradox's page but I felt that it was probably an Oni bug and I shouldn't distract 'dox anymore. I guess you would have had a simple solution to the problem no matter where I put it, EdT. So here's what happened: the NoOcc package has a custom .grp so that I can specify "2" channels, AKA 44Khz sound, since Oni's .grp expects 22Khz. What I had forgotten that I also tried to turn up the volume of the gears noise by setting the .grp's Volume to 2 instead of 1. Because a sound's maximum actual volume in Oni is 1, what happens with a >1 volume setting is that a sound will reach 100% volume from farther away than if the sound was set to a volume of 1. Because I was standing within the >1 apparent volume range of the NoOcc package's louder gears, I couldn't hear any difference in sound volume when a window got in the way. That's because the volume was still greater than 1 even though the sound was in fact being occluded from say, 1.9 to 1.4.
*Reversed both horizontally and vertically? I think it's only vertically. I'll fix that.
::Well, I learned something about sound today! Sorry for cluttering your talk page unnecessarily, Neo (I know you won't be seeing this until the weekend anyway). The funny thing is that I just got done telling someone on the forum about sound_show_debug, but I had no idea that the numbers in the left column were apparent volume so I didn't think of using the debug display on my package. Well, thanks EdT, at least I know everything is working properly. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 18:06, 25 April 2013 (CEST)
*Gray TXMP: I'm not sure what's happening. One thing to check is if the width and height of image are a power of 2. Non power of 2 texture dimensions may result in problems either in OniSplit or Oni.


[[User:Neo|Neo]]
Maybe I responded too quickly the last time. :-)
You're right, I tried this command and it works:
mono onisplit.exe -extract:tga ../../ModTXMP/test ../../ModTXMP/TXMPBOSS2face.oni
Sorry, it was only flipped vertically when viewed in the game.
Finally, I tried again with 256x256 to replace 64x64 and this time it worked.  Not sure why I got the gray TXMP last time.
Being able to create TXMP in OniSplit is great! Thank you!
EdT
I think I fixed the flipping: OniSplit v0.8.12
[[User:Neo|Neo]]
It works. See this screenshot:
http://oni.bungie.org/community/forum/attachment.php?item=209
Thanks,
EdT
Another question, is it possible to create TXMPs from a directory of image files?
Like a batch process of the image files, or should I work on a script to do the batch processing?
EdT
Yes, you can specify multiple input files on the command line:
  onisplit -create:txmp output_dir image_dir\ex1.tga image_dir\ex2.tga
or you can use wildcards:
  onisplit -create:txmp output_dir image_dir\*.tga
[[User:Neo|Neo]]
Awesome, the wildcard version is what I needed!.
Many thanks.
EdT
I found a bug when extracting TXMP with Alpha channels. See the following screenshots:
http://edt.oni2.net/OniSplit/TXMPKS2.jpg
I did not modify the files at all, I first extracted them as .tga files, then created new .oni files from the extracted .tgas.
Here are the extracted face and chestpack files:
http://edt.oni2.net/OniSplit/TXMPFKS_face.tga
http://edt.oni2.net/OniSplit/TXMPFKS_chestpack.tga
I hope you can fix this bug.
Thanks,
EdT
That's not a bug, alpha channel is exported correctly. What happens there is that those TXMPs have an environment map and currenly OniSplit has no option to add a environment map when creating the TXMP. The only solution I see is to add an option like "-env:env_txmp_name" to allow you to specify one. Of course the problem remains how do you know when you need an env map and how that option works with something like batch processing so opinions are welcome.
[[User:Neo|Neo]]
Thank you for explaining the situation to me.
Please add the option for the environment map.
I can think of a couple of ways to handle when an env map is needed. If Onisplit when first extracting the TXMP can flag the file having an env map, perhaps making the name TXMP7...
then when creating the TXMP, the user or program can run the command with the env map option.
The other way is trial and error, if the TXMP comes out wrong, like above, then the user needs to use the env map option.
EdT
New OniSplit version: OniSplit v0.8.13
Envmap problem: for now I added an "-envmap" option through which the name of the env map texture can be specified:
onisplit -create:txmp dest_dir -genmipmaps -envmap:envksface TXMPIteration%2FKS_face.tga
I'll try to figure out a better way to do it. Storing texture options in a tga file seems possible but I'm not sure if editing tools preserve that information.
The envmap name can have the TXMP prefix but it is not required, it is added automatically if missing.
Export/Import for Wavefront OBJ files:
*Named M3GMs and (unfortunately unnamed) M3GM contained in ONWC files can be exported to obj file format:
  onisplit -extract:obj dest_dir M3GMnotfound.oni
  onisplit -extract:obj dest_dir ONWCw1_tap.oni
Or for greedy :) people:
  onisplit -extract:obj dest_dir level0_Final.dat
*Importing obj files:
  onisplit -create:m3gm dest_dir TCTF_Shotgun.obj
For importing obj files the obj file must only contain triangles so when exporting a model from a 3D design tool it needs to be triangulated. If the obj file uses more than one texture then only one will be taken into consideration. If the obj file does not contain a texture or someone wants to use a different one then the texture name to be used can be specified with -tex option:
onisplit -create:m3gm dest_dir -tex:TCTF_Shotgun TCTF_Shotgun.obj
Just like in -envmap option case the texture name can start with TXMP but it is not required.
Note that in both -envmap and -tex cases a .oni file is not created for the specified texture. The .oni file for that texture must be create separatly.
[[User:Neo|Neo]]
I have a question, how and where would I find the name of the env map that is used for a TXMP?
For example, you stated "-envmap:envksface TXMPIteration%2FKS_face.tga" 
Finally, could I post on Oni Central Forum, whenever, a new OniSplit is released along with the information you provide?
Thank you.
EdT
Hmm... you have a good question :). One way that comes to mind is a hidden option of OniSplit:
  onisplit -dump TXMPIteration001%2FKS_face.oni
This will print something like:
TXMPIteration001/KS_face:TXMPInstance {
        TextureName:"Iteration001/KS_face"
        Flags:4609
        Width:128
        Height:128
        Format:0
        Animation:null
        EnvMap:"TXMPenvksface"
        DataOffset:32
}
As for posting on Oni Central Forum I have nothing against it. Though I should do it myself probably but I don't have an account in there and I have yet to decide if I'll create one.
[[User:Neo|Neo]]
----
----
:The easiest way to find the envmap texture is to open the .oni file in binary.
Hi Neo,
:At the end of the "dat" part (before the "raw" bitmap data) will be the names.
:For a TXMP without an envmap, there will be only the name of the TXMP itself.
:For an envmapped TXMP, there will be an extra name - that of the envmap TXMP.
::[[User:Geyser|geyser]] 22:35, 4 February 2008 (CET)
 


This is interesting, I did the -dump as you stated and this is what I got:
I've tried a couple of OniSplit commands but I couldn't get some to work with latest public version (0.9.94.0). The commands are the follow:


TXMPIteration001/KS_face:TXMPInstance {
'''Conversion of ONWC > OBJ and DAE:'''
TextureName:"Iteration001/KS_face"
Flags:4097
Width:128
Height:128
Format:8
Animation:null
EnvMap:null
DataOffset:32
}


In the Mac version, I don't have a EnvMap.  I also looked at the file with a hex editor and there was no envmap name.
  -extract:obj outputdir input_ONWC.oni


EdT
  -extract:dae outputdir input_ONWC.oni


Hmm... I checked with an Mac Oni file I have and the env maps are there. Are you sure you aren't using .oni files that you created previously (without an envmap)?
both execute with sucess but don't generate output.


[[User:Neo|Neo]]
'''Conversion of OBJ > M3GM:'''


Hangs head in shame... 
  -create:m3gm outputdir input.obj


Now I created new .oni files and the envmap is there. So I tried again to import face and chestpack, all I did was increase the size to 256x256 but now this occurs:
I get the exception:
  System.ArgumentOutOfRangeException: O ¡ndice estava fora do intervalo. Tem de ser nÆo negativo e inferior ao tamanho da colec?Æo.
  Nome do par?metro: index
  em System.ThrowHelper.ThrowArgumentOutOfRangeException()
  em Oni.Dae.IO.ObjReader.ReadVertices(String[] tokens)
  em Oni.Dae.IO.ObjReader.ReadFace(String[] tokens)
  em Oni.Dae.IO.ObjReader.ReadObjFile(String filePath)
  em Oni.Dae.IO.ObjReader.ReadFile(String filePath)
  em Oni.Motoko.GeometryImporter.Import(String filePath, String outputDirPath)
  em Oni.Program.ExecuteTasks(String[] args, String outputDirPath, Set`1 importedFiles, Queue`1 taskQueue)
  em Oni.Program.CreateGeneric(String[] args)
  em Oni.Program.Main(String[] args)


http://edt.oni2.net/OniSplit/whiteface.jpg
Could these be fixed? Thanks. [[User:Script 10k|Script 10k]] ([[User talk:Script 10k|talk]]) 22:07, 3 January 2014 (CET)


EdT
----
----
:When in doubt, provide the .oni files you generated, and maybe the source TGA and the exact command-line call you used.
Hi Neo, do you still stop by the wiki? Not sure if you will see this. I sent you an email at what I'm pretty sure is your Yahoo! address, but I don't know if you still check that email, and it doesn't seem that you use Yahoo! Messenger anymore. I'm trying to get back in touch with you to ask you some questions about OniSplit, etc. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 00:02, 27 September 2016 (CEST)
:Exhaustive information makes support more straightforward, and in any case it's better than hanging your head in shame.
::03:11, 5 February 2008 (CET)
 
I was hanging my head in shame because I was looking at the old .oni files for the envmap info :-)
 
Here the link to the .tga files, the converted .oni files and the commands I used to generate them
http://edt.oni2.net/OniSplit/TXMPenvmap.zip
 
Thanks for looking into this.
 
EdT
 
He he... nice icy Konoko you got in there :). It turns out that Oni does not support Bgra32 format after all so you need to specify -format:bgra4444 (or -format:bgra5551) on the command line when using textures with an alpha channel.
 
To make things simpler here's a new version: OniSplit v0.8.14. It automatically switches to bgra4444 if the input texture is bgra32. One can still specify bgra5551 if needed. In addition to this I fixed a bug that caused bad mipmap generation for textures with alpha channel.
 
[[User:Neo|Neo]]
 
On a second thought: [http://cid-639aa31296681bfe.skydrive.live.com/self.aspx/Oni/OniSplit_v0.8.15.zip OniSplit v0.8.15]. The TGA files I export are always in Bgra32 format so this means they will always be autoconverted to Bgra4444 which is not ideal. Also detecting if a TGA file has an alpha channel or not is not very reliable.
 
The end result is that one needs to specify a texture format when creating TXMP files no matter what. That is:
 
*bgr555 (or dxt1) for most of the stuff
*bgr32 for skyboxes
*bgra4444 for transparent/reflective stuff (in a couple of places bgra5551 is used but probably it's not big deal if bgra4444 is used instead)
 
[[User:Neo|Neo]]
 
Success!!!! No more icy Konoko! We have reflectivity!
 
Thank you so much!
 
EdT
 
Neo, just wanted you to know the latest version of OniSplit works on the Mac, I can extract ONCC files!  That's awesome, thanks.
I'm sure soon you'll have the create or import ONCC working too!
Also, the OBJ viewer works on Intel Macs, but it seems not on older Macs.  Not sure if its an OS issue or hardware issue.
 
Neo, I was trying to import the delorean.obj that geyser made, but got the following error:
 
  mono onisplit.exe -create:m3gm test  delorean.obj
  System.ArgumentOutOfRangeException: Argument is out of range.
  Parameter name: index
  at System.Collections.Generic.List`1[System.Int32].get_Item (Int32 ) [0x00000]
  at Oni.Files.Geometry.ObjFile.ReadVertices (System.String[] tokens) [0x00000]
  at Oni.Files.Geometry.ObjFile.ReadFace (System.String[] tokens) [0x00000]
  at Oni.Files.Geometry.ObjFile.ReadObjFile (System.IO.TextReader reader) [0x00000]
  at Oni.Files.Geometry.ObjFile.FromFile (System.String filePath) [0x00000]
  at Oni.Files.Geometry.GeometryImporter.Import (System.String filePath, System.String outputDirPath) [0x00000]
  at Oni.Files.Program.CreateGeometry (System.String[] args) [0x00000]
  at Oni.Files.Program.Main (System.String[] args) [0x00000]
 
EDIT: False alarm, geyser just informed me the delorean was not triangulated.
 
EdT
 
:Re:false alarm; actually it ''is'' triangulated, but it uses negative indices ;) :P
::[[User:Geyser|geyser]] 05:06, 4 March 2008 (CET)
 
Can someone pass me a link to that file so I can test?
 
[[User:Neo|Neo]]
:Yeah, sorry. Here: http://geyser.oni2.net/edition/vehicles/delorean.zip
:It's not quite the original OBJ: I deleted the interior and camera path.
:But other than that it's the original thing that used minuses, not me.
::[[User:Geyser|geyser]] 18:05, 4 March 2008 (CET)
 
Fixed: [http://cid-639aa31296681bfe.skydrive.live.com/self.aspx/Oni/OniSplit_v0.8.18.zip OniSplit v0.8.18]
 
[[User:Neo|Neo]]
 
The update works! Thanks
 
EdT
 
Neo,
 
How have you been?  Any recent updates to OniSplit?
 
I have a request, when extracting OBJ, can you include TXMP in the file name for the tga files.
Thank you.
 
EdT
 
Sheesh... I haven't checked this page in a while. Sorry.
 
Just yesterday I created the first TRBS files from Collada files. I still have some bugs to fix but I'll get it working one of these days.
 
I'm not sure I understand your request about OBJ/TXMP/TGA. Can you please clarify?
 
[[User:Neo|Neo]]
 
That's great news... soon we'll be able to import new content into Oni.
 
Sorry, if I was not clear, when extracting an OBJ like Konoko, the exported .tga files are named "Iteration001_KS_chestpack.tga", "Iteration001_KS_wrist.tga" and so on.  However, my request is that the exported .tga files be named starting with TXMP such as "TXMPIteration001_KS_chestpack.tga".  Its just easier to work with and it will be consistent in the naming of the files with the command to extract all the TXMPs.
 
Thanks,
 
EdT
 
OK, I'll do that. The original plan was to make things "simpler" but I guess it's better to keep them "consistent" after all :).
 
[[User:Neo|Neo]]
 
OK, let's give it a try: [http://cid-639aa31296681bfe.skydrive.live.com/self.aspx/Oni/OniSplit_v0.9.0.zip OniSplit 0.9.0]
 
What's new:
 
:a couple of fixes to the collada exporter
:-create:trbs option to create a TRBS file from a collada file
 
How to use:
 
  onisplit -extract:dae some_dir level0_Final/ONCCkonoko_generic.oni
 
This will generate a ONCCkonoko_generic.dae collada file in the directory some_dir plus the tga texture files used by the specified character.
 
  onisplit -create:trbs dest_dir some_dir\ONCCkonoko_generic.dae
 
This will create a TRBSkonoko_generic.oni file in dest_dir
 
Notes:
:*Blender's Collada importer/exporter is buggy and you need to add the options -noanim and -zup when extracting collada files for use with Blender:
 
  onisplit -extract:dae some_dir -noanim -zup level0_Final/ONCCkonoko_generic.oni
 
::-noanim prevents the export of the default idle animation. That's needed because Blender doesn't import animated objects correctly.
::-zup exports a collada file with a coordinate system where Z axis points up instead of the default (Y up). This is needed because Blender uses Z up but the importer gets it wrong and convert to something else.
 
:*In the absence of the animation all bones are oriented along the X axis (no rotation applied to them) so the character will look kind of weird. You can rotate them any way you need/like, it won't affect the creation of TRBS files because only translations matter.
 
:*When exporting Collada files from Blender you need to select the "Triangles" option because OniSplit does not import polygons.
 
:*You can replace body parts by deleting existing ones and adding new ones but you need to set the parent bone and the name of the part correctly. In Blender you can see the bone hierarchy and names in the Outliner window.
 
:*Currently textures are exported to collada but they are ignored when importing. I'll add later an option to create TRMA files from some sort of input text file that specifies the images to be used.
 
:*If you are using XSI Mod Tool (that's what I use) you don't need/should specify the -zup option. While the collada file will load correctly in mod tool you won't be able to rotate the bones.
 
:*Everything else that I forgot to mention :)
 
:*I think I should cleanup this page a bit...
 
[[User:Neo|Neo]]
 
I knew that I forgot some "notes"...
 
:*Blender's Collada importer is buggy chapter 2: it ignores the vertex normals so the model will look flat instead of smooth. Unfortunately this persists when exporting so the TRBS file will be flat too. I've no workaround for this. Maybe I'll try to fix that importer myself because the whole project appears to be somewhat dead.
 
:*TRBS files (can) contain different geometry for 5 different levels of detail. Currently OniSplit does not have any support for this. When exporting the highest LOD will be exported and when importing the same geometry will be used for all 5 levels. It's likely that in the future I'll add the possibility to export/import each level separatly.
 
[[User:Neo|Neo]]
 
This is great, I'll have time tomorrow to give it a try.
 
Though I already have some questions. I want to make sure I understand the process:
 
Let's say I import Owldreamer's Masterchief (Currently it doesn't have any texture maps, but at least I want to see if it can be imported to Oni) into Blender, then export it out as a Collada file.
Then can I create a TRBS file from it?  Will OniSplit also create the M3GM files that make up the object and link them to the TRBS file?
Next, I will need to make an ONCC file for it, perhaps copy an existing one and change the TRBS link to the new one that was created, is that correct?
 
I suppose you can move the OniSplit discussions to the talk page for Onisplit.
 
Thanks,
 
EdT
 
OK, most of what I said above relates to modifying Collada files exported with OniSplit.
 
If you want to create something from scratch (or use an existing model but that has not been exported from Oni) you need a couple of things:
:*You need to have 19 pieces of geometry that fit the body parts used by Oni: pelvis, mid, chest etc.
:*Those pieces of geometry need to be parented correctly, load a Collada file exported from Oni and see the Outliner window.
:*Geometries (or more correctly the scene nodes that cotain the geometries) need to be named correctly: pelvis, mid etc. Again, see the Outliner window with an existing Oni model loaded.
:*"Advanced" models that use skeletons/skinning won't work. Oni does not support such things.
 
You should also check the [[TRIA]] page for more stuff about character models in Oni.
 
As for what OniSplit creates: it creates all the needed [[M3GM]], [[TRCM]], [[TRIA]] and [[TRTA]]. [[TRBS]] files are self contained, you don't need anything else.
 
And yes, the simplest way to create an ONCC file for a new TRBS is to copy and modify an existing ONCC file. Since TRBS files are linked to by name you'll need to use a hex editor to modify the TRBS name that's inside the ONCC file (somewhere at the end, you can find it by looking for "TRBS"). The only problem you may encounter is that you need to pick an ONCC file that's linked to a TRBS which has a name that's equal or longer than the new TRBS name otherwise you won't have space in the file for the new name.
 
[[User:Neo|Neo]]
 
I was able to extract the TRBS from Oni using the command:
mono onisplit.exe -extract:dae TRBS -noanim -zup ../GameDataFolder/level0_Final/ONCCkonoko_generic.oni
 
However, when I tried to import it into Blender2.45 I got the following error Message:
FEEDBACK: Illusoft Collada 1.4 Plugin v0.3.159 started
Traceback (most recent call last):
  File "/blender-2.45-OSX-10.3-py2.3-powerpc/blender.app/Contents/MacOS/.blender/scripts/bpymodules/colladaImEx/cstartup.py", line 609, in ButtonEvent
    transl = translator.Translator(doImport,__version__,debug,fileName, useTriangles, usePolygons, bakeMatrices, exportSelection, newScene, clearScene, lookAt, usePhysics, exportCurrentScene, exportRelativePaths, useUV, sampleAnimation, onlyMainScene)
  File "/blender-2.45-OSX-10.3-py2.3-powerpc/blender.app/Contents/MacOS/.blender/scripts/bpymodules/colladaImEx/translator.py", line 61, in __init__
    self.__Import(fileName)
  File "/blender-2.45-OSX-10.3-py2.3-powerpc/blender.app/Contents/MacOS/.blender/scripts/bpymodules/colladaImEx/translator.py", line 67, in __Import
    documentTranslator.Import(fileName)
  File "/blender-2.45-OSX-10.3-py2.3-powerpc/blender.app/Contents/MacOS/.blender/scripts/bpymodules/colladaImEx/translator.py", line 247, in Import
    self.colladaDocument.LoadDocumentFromFile(fileName)
  File "/blender-2.45-OSX-10.3-py2.3-powerpc/blender.app/Contents/MacOS/.blender/scripts/bpymodules/colladaImEx/collada.py", line 86, in LoadDocumentFromFile
    self.asset.LoadFromXml(self,xmlUtils.FindElementByTagName(colladaNode,DaeSyntax.ASSET))
  File "/blender-2.45-OSX-10.3-py2.3-powerpc/blender.app/Contents/MacOS/.blender/scripts/bpymodules/colladaImEx/collada.py", line 284, in LoadFromXml
    self.created = xmlUtils.ReadDateTime(xmlUtils.FindElementByTagName(xmlNode,DaeSyntax.CREATED))
  File "/blender-2.45-OSX-10.3-py2.3-powerpc/blender.app/Contents/MacOS/.blender/scripts/bpymodules/colladaImEx/xmlUtils.py", line 68, in ReadDateTime
    return GetDateTime(ReadContents(node))
  File "/blender-2.45-OSX-10.3-py2.3-powerpc/blender.app/Contents/MacOS/.blender/scripts/bpymodules/colladaImEx/xmlUtils.py", line 101, in GetDateTime
    return datetime(int(date[0]), int(date[1]), int(date[2]),int(time[0]), int(time[1]), int(float(time[2])))
ValueError: invalid literal for float(): 35.8247380-07
 
EdT
 
Fixed: [http://cid-639aa31296681bfe.skydrive.live.com/self.aspx/Oni/OniSplit_v0.9.1.zip OniSplit 0.9.1].
 
[[User:Neo|Neo]]
 
And another update to fix a small bug in the Collada exporter: [http://cid-639aa31296681bfe.skydrive.live.com/self.aspx/Oni/OniSplit_v0.9.2.zip OniSplit 0.9.2] (not really needed because most tools seem to ignore that error).
 
[[User:Neo|Neo]]
 
Thanks, I am able to import the TRBS file into Blender.  You're right, it does look weird at first, but rotating the different body parts to their correct position made it look right.
I'm a newbie to 3D, so I have lots to learn before I can accomplish anything.  I think the easiest thing for me is to try to replacing different body part from existing characters.
I just have to figure how to do that in Blender.
 
EdT
 
The simplest thing to do is to try to modify the existing geometry, export from Blender and create the TRBS to see if it works correctly.
 
Then you can try to replace the head with something simple like a cube: [http://cid-639aa31296681bfe.skydrive.live.com/self.aspx/Oni/head-in-a-box.png Head in a box] :)
 
So
:*delete the head
:*create a cube from Menu Add, Mesh, Cube
:*move it where the head was. Notice that you only need to move it along X axis.
:*rename the cube to "head". In the "Buttons Window" there should be a Link and Materials panel and in that panel there is a textbox that starts with OB: where you can type the name.
:*now you need to set the head's parent to be the neck. Select the head and then select the neck while holding the shift key and after you select them you can press ctrl + P (or menu Object, Parent, Make Parent)
 
To replace the head with something more interesting you'll probably need to import another file that contains what you need. The only problem is that what you import may end up in another scene and I haven't figured out how to move an object from one scene to another. In fact I haven't figured out how to copy/paste an object...
 
Note: The cube won't have texture coordinates so if you try to import in Oni you'll probably end up with a black head.
 
[[User:Neo|Neo]]
 
Please take a look at these files:
 
http://edt.oni2.net/OS/MCKonoko.blend  I replaced Konoko's head with MasterChief.
 
http://edt.oni2.net/OS/MCKonoko.dae  The exported Collada file.
 
Error message from OniSplit when creating a TRBS file:
 
  System.IO.InvalidDataException: No scene found
  at Oni.Files.Geometry.BodyImporter.ReadBodyParts (Oni.Files.Dae.Scene scene) [0x00000]
  at Oni.Files.Geometry.BodyImporter.Import (System.String filePath, System.String outputDirPath) [0x00000]
  at Oni.Files.Program.CreateBody (System.String[] args) [0x00000]
  at Oni.Files.Program.Main (System.String[] args) [0x00000]
 
Different test and error message.
 
I imported ONCCkonoko_generic.dae into Blender and then exported it out as Collada 1.4, with no changes.
This time I got the following message from OniSplit:
 
  System.Xml.XmlException: 'Element' is an invalid node type. file:///Oni/ExportedGameData/MCKonoko.dae Line 1743, position 4.
  at System.Xml.XmlReader.ReadEndElement () [0x00000]
  at Oni.Files.Dae.Reader.ReadEntity[Scene] (System.Action`1 entityReader) [0x00000]
  at Oni.Files.Dae.Reader.ReadLibrary[Scene] (ICollection`1 library, System.String elementName, System.Action`1 entityReader) [0x00000]
  at Oni.Files.Dae.Reader.ReadLibrary () [0x00000]
  at Oni.Files.Dae.Reader.Read (System.String filePath) [0x00000]
  at Oni.Files.Dae.Reader.ReadFile (System.String filePath) [0x00000]
  at Oni.Files.Geometry.BodyImporter.Import (System.String filePath, System.String outputDirPath) [0x00000]
  at Oni.Files.Program.CreateBody (System.String[] args) [0x00000]
  at Oni.Files.Program.Main (System.String[] args) [0x00000]
 
EdT
 
You need to select the "Disabled Physics" option when exporting. I also made a fix to ignore the physics stuff: [http://cid-639aa31296681bfe.skydrive.live.com/self.aspx/Oni/OniSplit_v0.9.3.zip OniSplit 0.9.3].
 
Another thing you should do is to select "Only Current Scene" when exporting to avoid having all scenes exported to the Collada file. In any case you need to make sure the "current scene" is the one you want to export. In you file it seems that the current scene was the one with the MC.
 
Now for the more complex problem: I said that rotation and scaling transforms are ignored and only translations are used when creating TRBS file. That's because TRBS only use translations and it has the advantage that you can rotate stuff to allow for easier editing. But that also means that if you add new geometry then the new geometry must already be scaled and oriented correctly.
 
For example in your file the head now has a scaling of 2.355 (select the head and press N (or select Transform Properties from the Object menu) to see the applied transform). This scaling is ignored when creating the TRBS and the result is a very small head.
 
I'm not very familiar with Blender but it appears that you need to do the following:
:*select pelvis
:*rotate it so all rotations are 0 (or you can simply edit them in the Transform Properties window)
 
(why you need this? because otherwise you'll be mislead about the real position of the head)
 
:*select head
:*select ObData to Center from Object, Transform menu
:*select Apply Scale/Rotation tr to ObData from Object, Clear/Apply menu
 
Something along these lines. I got it working once but second time when I tried it still exported a strange -90 rotation around X despite the Transform Properties window showing all rotations to be 0. Probably I did something different or the crap Collada exporter is playing tricks.
 
[[User:Neo|Neo]]
 
:One thing I do know, is that there's no way the Collada plug-in should be v1.4. More like v0.4. Seriously. Look at the [http://colladablender.illusoft.com/cms/content/blogcategory/18/44/ progress list] and you realize how incomplete it is, not to mention the bugs. I mean, getting Blender's axes wrong? Ridiculous.
:Anyway, I don't have any feedback on how TRBS importing is working until I try it some more tonight, but I just wanted to thank you for all the work you've done in documenting OBD stuff and writing OniSplit. I love 3D modeling, so anything that lets me import models into Oni is super-welcome (working on an [[:Image:Poly_Mods-Griffin_Master_Comp.jpg|HD Griffin]] at the moment, in case you aren't aware). --[[User:Iritscen|Iritscen]] 17:58, 10 April 2008 (CEST)
 
It's v0.3.159 actually, v1.4 is the Collada version. Kind of confusing, indeed. As for that progress list, oh well, take a look at this for example:
 
"Vertex normals Vertex normals t t "
 
where t means "ready for testing". Ready for testing my #$%, the normals are completly ignored.
The worst part is that the project appears to be dead. No updates in 8 months doesn't sound well.
 
I guess I'll try fixing the vertex normals and maybe the animation importing problem too if I manage to cut my way in that Python script jungle.
 
[[User:Neo|Neo]]
 
Neo, please look at the OniSplit talk page for my continued discussion on OniSplit and TRBS.  Your talk page is getting too LONG! :-)


EdT
[[Category:Userspace]]

Latest revision as of 15:27, 7 May 2023

Talk page archives: #1 - #2 - #3 - #4 - #5

Hi Neo, In the latest oni split 0.9.55, there seems to be a problem with converting ONCC files, It fails to convert ONCC.xml files made by earlier to oni files .. says something about jump fields, the ONCC xml created by older versions are different from the ones created by this one, different fields <Jump Constants> and <Air Constants> instead of <Physics>, that would be ok we could switch to the new layout. However onisplit v.55 also fails to convert ONCC.xml it created back to oni. .. convert any ONCC.oni to xml, try to convert that xml back to oni, it fails.

2- It is also unable to convert a TRAM.oni file made from a dae by older versions back to xml : Operation is not valid due to current state of object. (containing QKEYS) while 0.941 is able to convert them.

reported by Samer on July 10 2011


Hi Neo, a bug has been ecountered by me in OniSplit's xml export. The bug applies on versions 0.9.50.0 and 0.9.52.0. If exported TRAM file has direct animation links, only the second direct link is written into XML file. The first direct link is ignored (is always an empty element).

This is an excerpt from KONCOMcomb_p_p XML file as created by OniSplit 0.9.52.0:

       <DirectAnimations>
           <Link />
           <Link>TRAMKONCOMcomb_p_p_k</Link>
       </DirectAnimations>

It should be:

       <DirectAnimations>
           <Link>TRAMKONCOMcomb_p_p_p</Link>
           <Link>TRAMKONCOMcomb_p_p_k</Link>
       </DirectAnimations>

Binary (*.oni) files contain both direct links. Exported XML files don't. Since usually only the first direct link is used, this bug poses quite a nuisance. Thank you in advance.

It might be that the binary (oni/exe) are corrupted. My version of TRAMKONCOMcomb_p_p.oni was correctly extracted with onisplit 52. --paradox-01 19:00, 8 July 2011 (CEST)

While I'm here I will take the chance to also ask something. I'm trying to create a combo. The animations work fine with animation type Kick, Kick2, Kick3 but not with KickRight, KrKr*, KrKrKr**. Could it be that those* animation types are dead? I hope you will find out what's wrong. --paradox-01 19:00, 8 July 2011 (CEST)

Loser: The problem more than likely was the fact that the TRAMKONCOMcomb_p_p_p.oni was not in the same directory as TRAMKONCOMcomb_p_p. To test, I removed TRAMKONCOMcomb_p_p_p.oni and got the same result as you did, added it back and got the correct output. OniSplit wants all the files to be in the same directory. EdT 23:36, 8 July 2011 (CEST)




Neo, do you think we can have something like a -nodeps argument added to OniSplit? We could use a way to prevent the program from automatically following all dependencies when exporting files like ONCCs to XML. --Iritscen 14:26, 6 July 2011 (CEST)

Oops, never mind, it sounds like this is already OniSplit's default behavior.... --Iritscen 16:24, 6 July 2011 (CEST)

Pathfinding issue fixed, though it seems to be still slightly off:

Junkyard PFG.jpg

There is still the issue of falling through the ground.

level files are here: http://edt.oni2.net/testlevel/junkyard.zip

EdT 03:14, 18 June 2011 (CEST)


Hi Neo,

I was able to create the pathfinding grids, however, they are offset from the geometry. Also, there is a spot where you will fall through the ground.

Junkyard.png

The bnv itself is correct:

Junkyard bnv.png

Here are my files: http://edt.oni2.net/testlevel/TestLevel.zip

EDIT: Tested OniSplit with the arena level data: http://mods.oni2.net/system/files/80200ArenaofHurt.zip Extracted the AKEV, then used create:akev to import the level. The pathfinding grids were offset from the geometry and there were areas where the player will fall through the floor.

EdT 01:03, 17 June 2011 (CEST)



Hi Neo, I have tried Your ".dae" to ".xml" animation importer. I keep getting message ".dae files cannot be imported as TRAM". Can you tell me please where is the problem? Thank you. --Loser 13:00, 11 July 2010 (UTC)

Hello, to import an animation you need an xml file and a dae file. If you try to export a TRAM to xml you get both files and when importing you need to provide the xml file, not the dae file. The dae file is referenced from inside the xml file (see the DaeImport element) Neo


New OniSplit version: OniSplit v0.9.52 (https://cid-639aa31296681bfe.skydrive.live.com/self.aspx/Oni/OniSplit/OniSplit%5E_v0.9.52.zip, dead link)

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.

New OniSplit version: OniSplit v0.9.41

What's new:

  • fixed the Collada importer to work with 3DSMax exported files

New 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

Neo

I get this error message using the command create:tram

 System.NotSupportedException: Invalid rotation axis {X:0 Y:0 Z:-1} for rotate transform in animation pelvis-node-ry
 at Oni.Totoro.AnimationDaeReader.FindRotations () [0x00000] 
 at Oni.Totoro.AnimationDaeReader.Import (System.String filePath, System.String outputDirPath) [0x00000] 
 at Oni.Program.CreateGeneric (System.String[] args) [0x00000] 
 at Oni.Program.Main (System.String[] args) [0x00000]  (1)

The dae files are here: http://www.filefront.com/14507129/dae.rar (dead link)

xml animation file here: http://www.filefront.com/14507115/ID%20walking.xaf (dead link)

Thanks EdT

Yep, caused by Z-up. I'll see what I can do.

Neo

Hi Neo,

When you have time, can you take a look at this:

TRBSproblem.jpg

When I use the latest FBX Converter 2010.2 to convert FBX to DAE, I get this problem. However, when I use an older version, it works fine. Here are the DAEs from both version: http://edt.oni2.net/temp/TRBSproblem.zip G2 is uses the new version, G1 uses the old.

Thanks EdT

Oh boy, the new converter uses matrix transforms instead of individual scale/rotate/translate transforms. I'll see what I can do...

Neo



The Iron Demon walks! Sorta...

You can see the video here: http://edt.oni2.net/ID/IDwalk.wmv

I converted the files from Bobbysoon (TRAMID_run1stepb.DAE, TRAMID_runstart.DAE, TRAMID_runstop.DAE) to xml. The XML gave the pelvis height as <Height>-2175.5</Height>, so I removed the negative and divided the height by 100. But as you can see, the model floats above the ground. Also, the velocity has some large numbers in the first part <Velocity>-4.076141 0</Velocity> I think that is the cause of the ID moving sideways not forward.

Files here: http://edt.oni2.net/ID/ID_Files.zip

EdT

Ha ha, that's going in my album of weird modding results. Anyway, I didn't even realize that animations were supposed to work yet, I thought we were waiting for an update to OniSplit. --Iritscen 14:33, 29 November 2009 (UTC)



Hi Neo,

Having problems converting DAEs to trams. I put all the files in a zip and included a ReadMe with the description of the errors. http://edt.oni2.net/temp/NeoTRAM.zip

I was trying to make new animations, whenever you have time, please take a look. Thanks EdT



Hmm... I just discovered that I can't export TXMPs from a .dat file to the PNG format. I am attempting to use the -extract:png command on a virgin .dat file. The -extract:tga options works fine, but the -extract:png option gives:

System.TypeInitializationException: An exception was thrown by the type initializer for System.Drawing.GDIPlus --->  System.DllNotFoundException: gdiplus.dll
 at (wrapper managed-to-native) System.Drawing.GDIPlus:GdiplusStartup (ulong&,System.Drawing.GdiplusStartupInput&,System.Drawing.GdiplusStartupOutput&)
 at System.Drawing.GDIPlus..cctor () [0x00000] 
 --- End of inner exception stack trace ---
 at System.Drawing.Bitmap..ctor (Int32 width, Int32 height, PixelFormat format) [0x00000] 
 at (wrapper remoting-invoke-with-check) System.Drawing.Bitmap:.ctor (int,int,System.Drawing.Imaging.PixelFormat)
 at Oni.Imaging.SysExporter.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.ExtractTextures (System.String[] args) [0x00000] 
 at Oni.Program.Main (System.String[] args) [0x00000]

This occurred in both 0.9.38 and 0.9.41 on my Mac. I used to always extract TXMPs as TGA, so I don't know when this actually worked for me. --Iritscen 17:54, 2 January 2010 (UTC)

TGA always works because it's all done in OniSplit. For PNG/JPG I'm using the framework (.NET/Mono) and Mono seems to have a problem. Neo
I just tested it myself and I was able to extract all the textures from a virgin .dat file as PNG. I'm using the latest version 0.9.45 and the latest Mono framework. OSX 10.5.8 and 10.6.2 EdT
Okay, after many aborted attempts at updating mono (I was running 2.0.1) by building from source or using their binary installer, I realized that the installer was putting the files in some meaningless directory, and I ended up copying them to the right system directories, hoping I didn't overwrite libraries that were supposed to stay unchanged. Who knows what the consequences will be down the road for other stuff, but OniSplit now exports PNGs properly for me! --Iritscen 20:28, 3 January 2010 (UTC)

Observations of importing TRAMs to XSI.

Sometimes, imported TRAMs will have odd rotations mainly related to the pelvis and thighs. Here is one example, the Striker's walking TRAM: http://edt.oni2.net/TRAMS/WalkOS.wmv As you can see the pelvis and thighs are rotating in an odd fashion. This is due to euler vs quaternion rotations. To see it correctly in XSI, you can use the option to "Convert Euler Rotation to Quaternion" on the pelvis and thighs, then the animation appears correct: http://edt.oni2.net/TRAMS/WalkQT.wmv However, when importing a converted animation back to Oni, you get this result: http://edt.oni2.net/TRAMS/WalkOni.wmv

When a TRAM is imported to XSI, to "unwrap" a model from the default animation state, the right thigh is rotated 180 on the X axis and -180 on the Z axis, the left is rotated -180 on the X and -180 on the Z axis. Somehow, from this starting point, whenever XSI moves the thigh from a negative to a positive angle (or in the case of this example from positive to negative), the part would rotate the long way around as shown here: http://edt.oni2.net/TRAMS/ThighXZaxis.wmv

One workaround is to insert keyframes to cause the animation to rotate in the correct direction.

I found another approach that seems to work, if you are making an animation from scratch. That is to rotate the thighs down 180 on the Y axis. So far in my testing, there are no odd rotations: http://edt.oni2.net/TRAMS/ThighYaxis.wmv

The Striker DAE files and the XSI scene files are here: http://edt.oni2.net/TRAMS/TRAMfiles.zip

EdT

I'm still unsure how the XZ animation was produced. There's a keyframe (for the Z rotation of left_thigh) that causes this. It's value is 135 while all the other keyframes for Z are well below 0 (-150..-180). If you move that keyframe to something like -215 then the animation works fine. Or so it appears to me...

Neo

That's true about changing the keyframe to -215, however, for all the TRAMs exported from Oni, the number for the rotations are always less than 180 or -180. When the thigh is positioned in front of the body, the rotation on the Z axis is negative, between the range of -0.x to -179.x and when it is positioned behind the body, the rotation number is positive, between the range of 0.x to 179.x. So my XZ animation was reflecting that aspect. EdT
Ah, I didn't think about that. I don't think it matters if those angles are between -180..180 or not, I haven't seen any problems while trying to import the animation with -215. Neo
Then my question is, would it be possible to program OniSplit one day, so that it can produce a TRAM DAE that will import into XSI without any of those odd rotations of the pelvis and thighs? Or for OniSplit to import a TRAM DAE that was converted from Euler to Quaternion rotation? It will be much easier to modify existing TRAMs without having to deal with those odd rotations. Thanks EdT
TRAM DAE: yes, I think so. I have an idea though I've yet to test it. Euler to Quaternion: I don't know why that doesn't work, I'll check. In theory there should be no problem. Neo
Found another solution (in XSI): use "Make rotation keys continuous" (in the same menu as Euler to Quaternion). Neo
I tested the it, however, TRAMs converted that way do not appear correctly in Oni: http://edt.oni2.net/TRAMS/WalkRot.wmv files:http://edt.oni2.net/TRAMS/TRAMfiles2.zip EdT
Not to say that this is the only problem but... you're .dae files for left and right are identical :) Neo
"The Make rotation keys continuous"is working great, no problems. Except for the stupid user error with the Striker's walk... lol EdT
Googled a possible solution and fitted it to one method. I have already checked it for some quaternions, which should result in euler angles, which contains values greater than 180 degrees, and it works fine. Here it is:
   public static Vector3 FromQ2(Quaternion q1)
   {
       float sqw = q1.w * q1.w;
       float sqx = q1.x * q1.x;
       float sqy = q1.y * q1.y;
       float sqz = q1.z * q1.z;
       float unit = sqx + sqy + sqz + sqw; // if normalised is one, otherwise is correction factor
       float test = q1.x * q1.w - q1.y * q1.z;
       Vector3 v;
       Func<float, float> NormalizeAngle = new Func<float, float>(angle =>
       {
           while (angle > 360)
               angle -= 360;
           while (angle < 0)
               angle += 360;
           return angle;
       });
       Func<Vector3,Vector3> NormalizeAngles = new Func<Vector3,Vector3>(angles =>
       {
           angles.x = NormalizeAngle(angles.x);
           angles.y = NormalizeAngle(angles.y);
           angles.z = NormalizeAngle(angles.z);
           return angles;
       } );
       if (test > 0.4995f * unit)
       { // singularity at north pole
           v.y = 2f * Mathf.Atan2(q1.y, q1.x);
           v.x = Mathf.PI / 2;
           v.z = 0;
           return NormalizeAngles(v * Mathf.Rad2Deg);
       }
       if (test < -0.4995f * unit)
       { // singularity at south pole
           v.y = -2f * Mathf.Atan2(q1.y, q1.x);
           v.x = -Mathf.PI / 2;
           v.z = 0;
           return NormalizeAngles(v * Mathf.Rad2Deg);
       }
       Quaternion q = new Quaternion(q1.w, q1.z, q1.x, q1.y);
       v.y = (float)Math.Atan2(2f * q.x * q.w + 2f * q.y * q.z, 1 - 2f * (q.z * q.z + q.w * q.w));     // Yaw
       v.x = (float)Math.Asin(2f * (q.x * q.z - q.w * q.y));                             // Pitch
       v.z = (float)Math.Atan2(2f * q.x * q.y + 2f * q.z * q.w, 1 - 2f * (q.y * q.y + q.z * q.z));      // Roll
       return NormalizeAngles(v * Mathf.Rad2Deg);
   }

p.s. sorry, not found any code tags or something like that. p.s.s. Mathf.Rad2Deg must be 57.2958f. other Mathf stuff is similar to Math p.s.s.s anyway, looks like the root of evil is not in quaternion -> euler conversion. i will try to investigate that. 6opoDuJIo


Hi Neo,

I have thought of adding a point to your todo list if you don't mind. Since the throw target is sort of reversed played in Oni (body rotated by 180 degrees, reversed movement, if I remember correctly), it would come handy if Onisplit can reverse it. Doing it in XSI would be a load of unnecessary work each time. Onisplit could easily recognize this special animation in the XML tags (<Flag>... ThrowTarget ...</Flag>). --Paradox-01 15:21, 29 March 2010 (UTC)


Here's a mystery [which has been solved, see edits below this one]: what is wrong with Oni's sound occlusion with 44Khz sounds in Windows (and possibly all occlusion on Macs)? Here are two alternate versions of a package: http://iritscen.oni2.net/temp/06000MissingSoundsNoOcc.zip (dead link) and http://iritscen.oni2.net/temp/06000MissingSoundsOcc.zip (dead link). This package simply adds a sound to the gears at the end of Science Prison. There are probably any number of ways to test for this issue, but this is how I noticed the problem, so I can vouch for its reproducibility.

  1. Install the Occ version of the package. This uses 22Khz sound.
  2. Load Science Prison SP1 so there's no music or enemies around, and do "chr_location 0 676.3 64.7 -1898.3". You're now on top of the gears.
  3. Run into one of the nearby rooms with windows. The sound comes from the point you teleported to, so position yourself so the "ray" from the sound can reach you through a window. If you are standing with part of the room's wall in the way, the sound may cut out completely, which you don't want.
  4. Listen to the sound. Isn't it soothing? Now shoot the glass out (the M. Bow is a nice choice, it's quiet so you can hear the gears more clearly). The sound should get louder. You can hear this in my movie http://iritscen.oni2.net/temp/GearsTestWindows.mp4 (dead link) (though the gears sound was distorted at the time because I didn't set the .grp properly, that's besides the point in this case).
  5. Now replace the Occ package with the NoOcc package and install it. This one uses 44Khz sound.
  6. Performing the same test, you should hear the gears at the same volume through glass as without the glass in the way. You can hear this issue in my movie http://iritscen.oni2.net/temp/GearsTestMac.mp4 (dead link). Obviously in the Mac test I was using 22Khz sound, and yet I experienced the same issue. I suspect something was changed in the occlusion code between the Windows and Mac releases, perhaps in tandem with the removal of 44Khz sound support, that glommed the Windows 44Khz bug onto the Mac 22Khz sound code.

Now, is it definitely a problem with Oni? I guess it is if we're sure that the sounds and .grp I provided are formatted and imported correctly. Or perhaps I'm totally mixed up here and don't know what I'm talking about. I've never done sound work before in Oni. --Iritscen (talk) 15:36, 25 April 2013 (CEST)

Iritscen: Try your test again with the command sound_show_debug=1 you will see a list of sounds and the sound level for each one. When you are in front of the gears the level is 1 for gears, gears.aif . Then move into one of the rooms behind the glass, the sound level will drop to around .6 or .7 depending on how far away you are. Shoot out the glass and then the sound level will return to 1.EdT (talk) 17:02, 25 April 2013 (CEST)
D'oh. I was wondering if I should have put this on Paradox's page but I felt that it was probably an Oni bug and I shouldn't distract 'dox anymore. I guess you would have had a simple solution to the problem no matter where I put it, EdT. So here's what happened: the NoOcc package has a custom .grp so that I can specify "2" channels, AKA 44Khz sound, since Oni's .grp expects 22Khz. What I had forgotten that I also tried to turn up the volume of the gears noise by setting the .grp's Volume to 2 instead of 1. Because a sound's maximum actual volume in Oni is 1, what happens with a >1 volume setting is that a sound will reach 100% volume from farther away than if the sound was set to a volume of 1. Because I was standing within the >1 apparent volume range of the NoOcc package's louder gears, I couldn't hear any difference in sound volume when a window got in the way. That's because the volume was still greater than 1 even though the sound was in fact being occluded from say, 1.9 to 1.4.
Well, I learned something about sound today! Sorry for cluttering your talk page unnecessarily, Neo (I know you won't be seeing this until the weekend anyway). The funny thing is that I just got done telling someone on the forum about sound_show_debug, but I had no idea that the numbers in the left column were apparent volume so I didn't think of using the debug display on my package. Well, thanks EdT, at least I know everything is working properly. --Iritscen (talk) 18:06, 25 April 2013 (CEST)

Hi Neo,

I've tried a couple of OniSplit commands but I couldn't get some to work with latest public version (0.9.94.0). The commands are the follow:

Conversion of ONWC > OBJ and DAE:

  -extract:obj outputdir input_ONWC.oni
  -extract:dae outputdir input_ONWC.oni

both execute with sucess but don't generate output.

Conversion of OBJ > M3GM:

  -create:m3gm outputdir input.obj

I get the exception:

  System.ArgumentOutOfRangeException: O ¡ndice estava fora do intervalo. Tem de ser nÆo negativo e inferior ao tamanho da colec?Æo.
  Nome do par?metro: index
  em System.ThrowHelper.ThrowArgumentOutOfRangeException()
  em Oni.Dae.IO.ObjReader.ReadVertices(String[] tokens)
  em Oni.Dae.IO.ObjReader.ReadFace(String[] tokens)
  em Oni.Dae.IO.ObjReader.ReadObjFile(String filePath)
  em Oni.Dae.IO.ObjReader.ReadFile(String filePath)
  em Oni.Motoko.GeometryImporter.Import(String filePath, String outputDirPath)
  em Oni.Program.ExecuteTasks(String[] args, String outputDirPath, Set`1 importedFiles, Queue`1 taskQueue)
  em Oni.Program.CreateGeneric(String[] args)
  em Oni.Program.Main(String[] args)

Could these be fixed? Thanks. Script 10k (talk) 22:07, 3 January 2014 (CET)


Hi Neo, do you still stop by the wiki? Not sure if you will see this. I sent you an email at what I'm pretty sure is your Yahoo! address, but I don't know if you still check that email, and it doesn't seem that you use Yahoo! Messenger anymore. I'm trying to get back in touch with you to ask you some questions about OniSplit, etc. --Iritscen (talk) 00:02, 27 September 2016 (CEST)