XML:TRMA: Difference between revisions

From OniGalore
Jump to navigation Jump to search
m (oops, I should have used the vanilla/ path for those pages I edited, shouldn't I? ^_^;)
m (copy-edit)
 
(2 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{ XML_File_Header | type=TRMA | prev=TRGE | next=TRSC | name=Texture Map Array }}
{{ XML_File_Header | prev=TRIG | type=TRMA | next=TRSC | name=Texture Map Array}}


'''general information'''
==General information==
* The xml code on this page is compatible with onisplit '''v0.9.61.0'''
* The XML on this page is compatible with OniSplit '''v0.9.61.0'''.
* TRMA files are stored ''globally'' (in AE/AEInstaller/vanilla/level0_Final.dat)
* TRMA files are stored locally in level''x''_Final.dat, but are globalized in the AE.
* these files are used by ONCC to get textures for the 3D mesh (TRBS)
* These files are used by [[XML:ONCC|ONCCs]] to look up the textures for a character's 3D mesh ([[XML:TRBS|TRBS]]).
* the mesh has 19 body parts, so there are also 19 textures links in the TRMA
* A character model has 19 body parts so there are also 19 texture links in the TRMA.
* the order of the TRMA links is determined by the mesh hierarchy ([[OBD:TRIA#Bones|TRIA]])
* The order of the TRMA links is determined by the mesh hierarchy in the [[XML:TRIA|TRIA]].


 
==Example==
'''example'''
TRMAkonoko002_high_texture_generic.xml:
 
TRMAkonoko002_high_texture_generic.xml
  <?xml version="1.0" encoding="utf-8"?>
  <?xml version="1.0" encoding="utf-8"?>
  <Oni>
  <Oni>
Line 39: Line 37:
  </Oni>
  </Oni>


TRMA files contain sometimes a link with a "/" in it. The actual TXMP file use a "%2F" instead of the "/".
The TXMP links always contain a '/' character, as seen above, because the original resources were grouped in subfolders. The actual TXMP file use a "%2F" to encode the "/", e.g. "TXMPIteration001%2FKS_pelvis.oni".
 
 
For example:


:TXMPIteration001%2FKS_pelvis.oni<br>
==VBS code for Mod Tool==
:TXMPIteration001%2FKS_thigh_horiz.oni<br>
This snippet gets the file path, width and height of all textures of the selected character. Could be [[Mod_Tool/Scripting#Write_text_file|extended to write XML]] for a TRMA and TXMP generator.
:[...]
if selection.count > 0 then
' any part could be selected, let's find the root body part
SelectNeighborObj selection(0), 4
' get all members including the pelvis
set bodyparts = selection(0).FindChildren( , , siMeshFamily)
for each member in bodyparts
logmessage "object name: " & member.name
if not typename(member.Material.CurrentImageClip) = "Nothing" then
logmessage "texture: " & member.Material.CurrentImageClip.source.filename.value
'logmessage "material: " & member.Material.name
'logmessage "shader: " & member.Material.shaders(0).name
logmessage "X: " & member.Material.CurrentImageClip.source.Parameters("XRes").Value
logmessage "Y: " & member.Material.CurrentImageClip.source.Parameters("YRes").Value
end if
logmessage "----------------------------------------------------------"
next
logmessage "counted body parts: " & bodyparts.count
end if


{{XML}}
{{XML}}

Latest revision as of 14:52, 30 March 2021

TRMA : Texture Map Array
XML modding tips
  • See HERE to start learning about XML modding.
  • See HERE if you are searching for information on how to handle object coordinates.
  • See HERE for some typical modding errors and their causes.
XML.png
XML

TRIG << Other file types >> TRSC

switch to OBD page

General information

  • The XML on this page is compatible with OniSplit v0.9.61.0.
  • TRMA files are stored locally in levelx_Final.dat, but are globalized in the AE.
  • These files are used by ONCCs to look up the textures for a character's 3D mesh (TRBS).
  • A character model has 19 body parts so there are also 19 texture links in the TRMA.
  • The order of the TRMA links is determined by the mesh hierarchy in the TRIA.

Example

TRMAkonoko002_high_texture_generic.xml:

<?xml version="1.0" encoding="utf-8"?>
<Oni>
   <TRMA id="0">
       <Textures>
           <Link>TXMPIteration001/KS_pelvis</Link>
           <Link>TXMPIteration001/KS_thigh_horiz</Link>
           <Link>TXMPIteration001/KS_calf_nobknee</Link>
           <Link>TXMPIteration001/KS_foot</Link>
           <Link>TXMPIteration001/KS_thigh_horiz</Link>
           <Link>TXMPIteration001/KS_calf_nobknee</Link>
           <Link>TXMPIteration001/KS_foot</Link>
           <Link>TXMPIteration001/KS_mid</Link>
           <Link>TXMPIteration001/KS_chestpack</Link>
           <Link>TXMPIteration001/KS_neck</Link>
           <Link>TXMPIteration001/KS_face</Link>
           <Link>TXMPIteration001/KS_shoulder</Link>
           <Link>TXMPIteration001/KS_bicep</Link>
           <Link>TXMPIteration001/KS_wrist</Link>
           <Link>TXMPIteration001/ks_fist</Link>
           <Link>TXMPIteration001/KS_shoulder</Link>
           <Link>TXMPIteration001/KS_bicep</Link>
           <Link>TXMPIteration001/KS_wrist</Link>
           <Link>TXMPIteration001/ks_fist</Link>
       </Textures>
   </TRMA>
</Oni>

The TXMP links always contain a '/' character, as seen above, because the original resources were grouped in subfolders. The actual TXMP file use a "%2F" to encode the "/", e.g. "TXMPIteration001%2FKS_pelvis.oni".

VBS code for Mod Tool

This snippet gets the file path, width and height of all textures of the selected character. Could be extended to write XML for a TRMA and TXMP generator.

if selection.count > 0 then
	' any part could be selected, let's find the root body part
	SelectNeighborObj selection(0), 4
	' get all members including the pelvis
	set bodyparts = selection(0).FindChildren( , , siMeshFamily)
	for each member in bodyparts
		logmessage "object name: " & member.name
		if not typename(member.Material.CurrentImageClip) = "Nothing" then
			logmessage "texture: " & member.Material.CurrentImageClip.source.filename.value
			'logmessage "material: " & member.Material.name
			'logmessage "shader: " & member.Material.shaders(0).name
			logmessage "X: " & member.Material.CurrentImageClip.source.Parameters("XRes").Value
			logmessage "Y: " & member.Material.CurrentImageClip.source.Parameters("YRes").Value
		end if
		logmessage "----------------------------------------------------------"
	next
	logmessage "counted body parts: " & bodyparts.count
end if