Jump to content

OniSplit/WIP: Difference between revisions

alpha 7
m (++cat)
(alpha 7)
Line 1: Line 1:
==v1.0 (WIP)==
==v1.0 (WIP)==
::Really? Yes, really. Get the nightly [http://geyser.oni2.net/OniSplit/1.0a6_2022.01.22/ HERE] (1.0a6, 2022/01/22)
::Really? Yes, really. Get the nightly [http://geyser.oni2.net/OniSplit/1.0a7_2022.02.08/ HERE] (1.0a7, 2022/02/08)
:  0. '''''Possible introduction of aliases''''' for the notoriously confusing '''-export''' and '''-import''' (easily mistaken for the '''-extract'''/'''-create''' functionality).
:  0. '''''Possible introduction of aliases''''' for the notoriously confusing '''-export''' and '''-import''' (easily mistaken for the '''-extract'''/'''-create''' functionality).
::Historical synonyms for '''-export''' and '''-import''' are "unpack" and "pack", but I am leaning towards new aliases, most probably '''-split''' and '''-link'''.<br/>(OniSplit itself may be rebranded as ''GameDataTool'', and a lightweight app (limited to the split/link functionality) may be dubbed ''(Oni)SpLink'', although this is likely a bad idea.)
::Historical synonyms for '''-export''' and '''-import''' are "unpack" and "pack", but I am leaning towards new aliases, most probably '''-split''' and '''-link'''.<br/>(OniSplit itself may be rebranded as ''GameDataTool'', and a lightweight app (limited to the split/link functionality) may be dubbed ''(Oni)SpLink'', although this is likely a bad idea.)
Line 9: Line 9:
#'''''[[OBD:SUBT|Subtitle]] files now have a custom XML format''''' as requested by Script10k. You go from SUBT*.oni to XML using '''-extract:xml''', and you import using '''-create''' (both the old .txt subtitles and the new XML format are accepted as input). Vanilla English SUBTs roundtrip exactly both through TXT and through XML. Non-Vanilla SUBTs and other language versions not tested.   
#'''''[[OBD:SUBT|Subtitle]] files now have a custom XML format''''' as requested by Script10k. You go from SUBT*.oni to XML using '''-extract:xml''', and you import using '''-create''' (both the old .txt subtitles and the new XML format are accepted as input). Vanilla English SUBTs roundtrip exactly both through TXT and through XML. Non-Vanilla SUBTs and other language versions not tested.   
#The '''-fullname''' option is available for '''-extract:dae''' operations, '''''prepending the 4-character template tag to the filename''''' (TRBS, ONCC, AKEV, etc).
#The '''-fullname''' option is available for '''-extract:dae''' operations, '''''prepending the 4-character template tag to the filename''''' (TRBS, ONCC, AKEV, etc).
#'''Level creation works again.''' The <Import> feature of Physics.xml has been repaired (it is the feature that lets you import several OBOA entries and their OBANs from the same Collada file) and enhanced with a couple of options, like explicit script IDs for each animated object and custom prefixes/suffixes for animations. As a minor convenience, all _marker textures are now imported automatically. Support of multiple geometry .dae has been repaired as well.
#'''Level creation works again.''' The <Import> feature of Physics.xml has been repaired (it is the feature that lets you import several OBOA entries and their OBANs from the same Collada file) and enhanced with a couple of options, like explicit script IDs for each animated object and custom prefixes/suffixes for animations. As a minor convenience, all _marker textures are now imported automatically. Support of geometry split into several .dae files has been repaired as well.
#'''Interaction with Blender has been consolidated''' through the '''-blender''' option, available both when '''-extract'''ing and '''-create'''ing.<br/>The primary use of '''-blender''' is to control the transition between Oni's and Blender's axis conventions, both in terms of scene orientation (Y-up for Oni, Z-up for Blender) and rotation order (X-then-Y-then-Z for Oni, Z-then-Y-then-X for Blender).<br/>Another effect of '''-blender''', exclusive to '''-extract''', is to set up materials with <technique sid="common"> rather than <technique_common> in the exported Collada files. In contexts other than materials, <technique_common> is still used regardless of the '''-blender''' option. When importing a Collada file through '''-create''', both <technique_common> and <technique sid="common"> are accepted.
#'''Interaction with Blender has been consolidated''' through the '''-blender''' option, available both when '''-extract'''ing and '''-create'''ing.<br/>The primary use of '''-blender''' is to control the transition between Oni's and Blender's axis conventions, both in terms of scene orientation (Y-up for Oni, Z-up for Blender) and rotation order (X-then-Y-then-Z for Oni, Z-then-Y-then-X for Blender). A non-optional Blender-friendly change is that materials are now set up with <technique sid="common"> rather than <technique> in the '''-extract'''ed Collada files. In contexts other than materials, <technique_common> is still used.
#When '''-create'''ing a TRBS, non-standard skeleton hierarchy is still allowed (controlled by the node tree in the Collada file), but standard sibling order is enforced for "thigh" and "shoulder" bones (if detected).<br/>(At this point there is still no proper skeletal setup, meaning it's still the same "nested" approach, with rigid body parts hinged to one another, and the rest pose is still the infamous "folded umbrella". A more intuitive rest pose may be implemented later.)
#When '''-create'''ing a TRBS, non-standard skeleton hierarchy is still allowed (controlled by the node tree in the Collada file), but standard sibling order is enforced for "thigh" and "shoulder" bones (if detected).<br/>(At this point there is still no proper skeletal setup, meaning it is still the same "nested" approach, with rigid body parts hinged to one another, and the rest pose is still the infamous "folded umbrella". A more intuitive rest pose may be implemented later, either as an option or as a new default.)
#'''Characters/animations have been consolidated.''' Quaternion math is more accurate (preventing "upside-down" pelvis animation and other artifacts), as well as the "filtering" a.k.a. "smoothing" of rotation curves (Euler angles). The identification of animation curves in Collada input (when '''-create'''ing) is more robust. For long animations, warnings are now given for any data that is out of range for TRAM storage, most importantly when/if the rotation keys do not fit into 65535 bytes.
#'''Characters/animations have been consolidated.''' Quaternion math is more accurate (preventing "upside-down" pelvis animation and other artifacts), as well as the "filtering" a.k.a. "smoothing" of rotation curves (Euler angles). The identification of animation curves in Collada input (when '''-create'''ing) is more robust. For long animations, warnings are now given for any data that is out of range for TRAM storage, most importantly when/if the rotation keys do not fit into 65535 bytes.
#New options pertaining to dense rotation keyframes are available for TRAM operations:
#New options pertaining to rotation keyframes are available for TRAM operations:
#*When '''-extract'''ing a TRAM to .xml/.dae, Oni's sparse rotation keys are now preserved by default (with Euler smoothing/filtering applied); dense Euler curves (with 60 keyframes per second) can be forced through '''-dense'''.
#*When '''-extract'''ing a TRAM to .xml/.dae, Oni's sparse rotation keys are now preserved by default (with Euler smoothing/filtering applied); dense Euler curves (with 60 keyframes per second) can be forced through '''-dense'''.
#*For TRAMs that are '''-create'''d from .xml/.dae, the new default is also to preserve the rotation timeline, not filling in or trimming rotation keys for any bones. If the rotation data in the .dae is not directly compatible with Oni (e.g., keyframes occur between game ticks), then OniSplit will attempt to generate new keys with default/optimal trimming settings; the '''-rekey''' switch (or the equivalent '''-rekey:0''') have the same effect of default regeneration of rotation keys; dense keys (not recommended) can be produced with '''-rekey:-1''' or any negative parameter; a custom tolerance can be specified through '''-rekey:0.1''', '''-rekey:1''', etc.
#*For TRAMs that are '''-create'''d from .xml/.dae, the default is to generate a dense set of keys (through quaternion interpolation) and then regenerate a sparse set of rotation keys for each bone with default/optimal trimming settings (a.k.a. '''-tolerance:0'''). If the rotation data is too large with the optimal trimming settings (i.e. if the data for one or more bones ends up out of 16-bit indexing range), OniSplit will report an error, suggesting the use of a looser tolerance: '''-tolerance:0.1''', '''-tolerance:0.2''', etc.
#*Through the '''-keepkeys''' option it is possible to exactly preserve the rotation timeline, e.g., if roundtripping a Vanilla animation, or if importing an authored animation that is known to be optimal and Oni-compatible. If the rotation data in the .dae is not directly compatible with Oni (e.g., if keyframes occur between game ticks, or if intervals between keys exceed 255 ticks, or if there is no rotation key at the next-to-last tick), then '''-keepkeys''' will fail with a report of the non-conformant data.
#*Dense keys (not recommended) can be produced with the '''-dense''' option. If '''-keepkeys''' and '''-dense''' are present simultaneously, '''-keepkeys''' is ignored.
#A new '''-norle''' switch affects the conversion of Oni textures to TGA (in any context, such as ONCC or AKEV extraction, not just '''-extract:tga''' for a TXMP). The effect is that RLE encoding is not attempted, and the TGA files are typically larger.
#A new '''-norle''' switch affects the conversion of Oni textures to TGA (in any context, such as ONCC or AKEV extraction, not just '''-extract:tga''' for a TXMP). The effect is that RLE encoding is not attempted, and the TGA files are typically larger.
#A new '''-nocolor''' switch affects '''-extract:dae''' for AKEV. The effect is that vertex color information is omitted from the .dae scene (useful, e.g., if you work on lightmaps and don't need vertex colors at all).  
#A new '''-nocolor''' switch affects '''-extract:dae''' for AKEV. The effect is that vertex color information is omitted from the .dae scene (useful, e.g., if you work on lightmaps and don't need vertex colors at all).  
Line 31: Line 33:
#TSFF (font family) and its TSFT (fonts) can be '''-extract'''ed (to an XML file referencing several BDF files) and '''-create'''d, allowing the customization of Oni's fonts/encodings. --[[User:Geyser|geyser]] ([[User talk:Geyser|talk]]) 12:16, 12 January 2022 (CET)
#TSFF (font family) and its TSFT (fonts) can be '''-extract'''ed (to an XML file referencing several BDF files) and '''-create'''d, allowing the customization of Oni's fonts/encodings. --[[User:Geyser|geyser]] ([[User talk:Geyser|talk]]) 12:16, 12 January 2022 (CET)
#Unified approach to text encoding, favoring Unicode (Basic Multilingual Plane) for internal code points and UTF-8 (up to three bytes per character) for text input (from XML or TXT). Legacy encodings should be handled too (autodetected or specified from the command-line when '''-create'''ing text consoles, menus, subtitles, etc). --[[User:Geyser|geyser]] ([[User talk:Geyser|talk]]) 12:16, 12 January 2022 (CET)
#Unified approach to text encoding, favoring Unicode (Basic Multilingual Plane) for internal code points and UTF-8 (up to three bytes per character) for text input (from XML or TXT). Legacy encodings should be handled too (autodetected or specified from the command-line when '''-create'''ing text consoles, menus, subtitles, etc). --[[User:Geyser|geyser]] ([[User talk:Geyser|talk]]) 12:16, 12 January 2022 (CET)
#Full support of sound conversion, including IMA4 encoding, and/or support for hybrid formats that can store IMA4 data as well as MS ADPCM and PCM: the PC retail SNDD format already supports all three, and it sounds reasonable (pun intended?) to implement a hybrid flavor for "short" SNDDs as well, exclusive to new engines (OniX/Daodan).
#Lightmapping, normal/specular mapping, light sources (OBLS)...
#...
#...
#PROFIT!!!
#PROFIT!!!


[[Category:Completed modding tools]][[Category:Bi-platform modding tools]]
[[Category:Completed modding tools]][[Category:Bi-platform modding tools]]