Asset Formats

From OpenSimulator

(Difference between revisions)
Jump to: navigation, search
(Created page with "{{Warning|This page is still under construction. Need to slowly fill out the details of each type of asset, or find this information elsewhere on the web -- [[User:Justincc|Just...")
 
(Formats)
 
(16 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
{{Warning|This page is still under construction.  Need to slowly fill out the details of each type of asset, or find this information elsewhere on the web -- [[User:Justincc|Justincc]]}}
 
{{Warning|This page is still under construction.  Need to slowly fill out the details of each type of asset, or find this information elsewhere on the web -- [[User:Justincc|Justincc]]}}
  
==Introduction==
+
= Introduction =
  
There are many asset types in OpenSimulator (e.g. notecards, sounds, textures). Each of these has its own distinctive format.
+
There are many asset types in OpenSimulator (e.g. notecards, sounds, textures). Each of these has its own distinctive format.
  
On the whole, asset formats are identical to those used by the Second Life system, since they need to be sent to and understood by a second life client. However, some are unique to OpenSimulator, in particular the object/prim serialization format.
+
On the whole, asset formats are identical to those used by the Second Life system, since they need to be sent to and understood by a second life client. You can find the details of many of those in the libopenmetaverse library that OpenSimulator uses. However, some are unique to OpenSimulator, in particular the object/prim serialization format.
  
==Object/prim serialization formats==
+
= Formats =
  
There are currently two object formats in OpenSimulator - 'xml' and 'xml2'.  These are semantically identical and physically almost identical - by a sad quirk of fate slightly different formats are used for different purposes (e.g. serialization to asset store and storage in OAR files).
+
* [[Appearance Formats]] - The primary use of this format, apart from transferring appearance information between simulators and backend services, is to serve as the appearance format for NPCs.
 
+
* [[Object Formats]] - Formats used to serialize prim/object and inventory item data for later restoration.
==XML format==
+
 
+
Here's an example
+
 
+
<pre>
+
<SceneObjectGroup>
+
  <RootPart>
+
    <SceneObjectPart xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
      <AllowedDrop>false</AllowedDrop>
+
      <CreatorID>
+
        <UUID>57956c4b-ff2e-4fc1-9995-613c6256cc98</UUID>
+
      </CreatorID>
+
      <FolderID>
+
        <UUID>b06d2e45-650e-4e5d-a08a-b03a6dd67bff</UUID>
+
      </FolderID>
+
      <InventorySerial>0</InventorySerial>
+
      <UUID>
+
        <UUID>b06d2e45-650e-4e5d-a08a-b03a6dd67bff</UUID>
+
      </UUID>
+
      <LocalId>2094307979</LocalId>
+
      <Name>Companion cube</Name>
+
      <Material>3</Material>
+
      <PassTouches>false</PassTouches>
+
      <RegionHandle>1099511628032000</RegionHandle>
+
      <ScriptAccessPin>0</ScriptAccessPin>
+
      <GroupPosition>
+
        <X>81.85081</X>
+
        <Y>157.5245</Y>
+
        <Z>21.32862</Z>
+
      </GroupPosition>
+
      <OffsetPosition>
+
        <X>0</X>
+
        <Y>0</Y>
+
        <Z>0</Z>
+
      </OffsetPosition>
+
      <RotationOffset>
+
        <X>0</X>
+
        <Y>0</Y>
+
        <Z>0</Z>
+
        <W>1</W>
+
      </RotationOffset>
+
      <Velocity>
+
        <X>0</X>
+
        <Y>0</Y>
+
        <Z>0</Z>
+
      </Velocity>
+
      <AngularVelocity>
+
        <X>0</X>
+
        <Y>0</Y>
+
        <Z>0</Z>
+
      </AngularVelocity>
+
      <Acceleration>
+
        <X>0</X>
+
        <Y>0</Y>
+
        <Z>0</Z>
+
      </Acceleration>
+
      <Description/>
+
      <Color>
+
        <R>0</R>
+
        <G>0</G>
+
        <B>0</B>
+
        <A>255</A>
+
      </Color>
+
      <Text/>
+
      <SitName/>
+
      <TouchName/>
+
      <LinkNum>0</LinkNum>
+
      <ClickAction>0</ClickAction>
+
      <Shape>
+
        <ProfileCurve>1</ProfileCurve>
+
        <TextureEntry>iVVnRyTLQ+2SC0fK7RVGXwAAAAAAAAAAgD8AAACAPwAAAAAAAAAAAAAAAAAAAA==</TextureEntry>
+
        <ExtraParams>AA==</ExtraParams>
+
        <PathBegin>0</PathBegin>
+
        <PathCurve>16</PathCurve>
+
        <PathEnd>0</PathEnd>
+
        <PathRadiusOffset>0</PathRadiusOffset>
+
        <PathRevolutions>0</PathRevolutions>
+
        <PathScaleX>100</PathScaleX>
+
        <PathScaleY>100</PathScaleY>
+
        <PathShearX>0</PathShearX>
+
        <PathShearY>0</PathShearY>
+
        <PathSkew>0</PathSkew>
+
        <PathTaperX>0</PathTaperX>
+
        <PathTaperY>0</PathTaperY>
+
        <PathTwist>0</PathTwist>
+
        <PathTwistBegin>0</PathTwistBegin>
+
        <PCode>9</PCode>
+
        <ProfileBegin>0</ProfileBegin>
+
        <ProfileEnd>0</ProfileEnd>
+
        <ProfileHollow>0</ProfileHollow>
+
        <State>0</State>
+
        <ProfileShape>Square</ProfileShape>
+
        <HollowShape>Same</HollowShape>
+
        <SculptTexture>
+
          <UUID>00000000-0000-0000-0000-000000000000</UUID>
+
        </SculptTexture>
+
        <SculptType>0</SculptType>
+
        <SculptData/>
+
        <FlexiSoftness>0</FlexiSoftness>
+
        <FlexiTension>0</FlexiTension>
+
        <FlexiDrag>0</FlexiDrag>
+
        <FlexiGravity>0</FlexiGravity>
+
        <FlexiWind>0</FlexiWind>
+
        <FlexiForceX>0</FlexiForceX>
+
        <FlexiForceY>0</FlexiForceY>
+
        <FlexiForceZ>0</FlexiForceZ>
+
        <LightColorR>0</LightColorR>
+
        <LightColorG>0</LightColorG>
+
        <LightColorB>0</LightColorB>
+
        <LightColorA>1</LightColorA>
+
        <LightRadius>0</LightRadius>
+
        <LightCutoff>0</LightCutoff>
+
        <LightFalloff>0</LightFalloff>
+
        <LightIntensity>1</LightIntensity>
+
        <FlexiEntry>false</FlexiEntry>
+
        <LightEntry>false</LightEntry>
+
        <SculptEntry>false</SculptEntry>
+
      </Shape>
+
      <Scale>
+
        <X>0.5</X>
+
        <Y>0.5</Y>
+
        <Z>0.5</Z>
+
      </Scale>
+
      <SitTargetOrientation>
+
        <X>0</X>
+
        <Y>0</Y>
+
        <Z>0</Z>
+
        <W>1</W>
+
      </SitTargetOrientation>
+
      <SitTargetPosition>
+
        <X>0</X>
+
        <Y>0</Y>
+
        <Z>0</Z>
+
      </SitTargetPosition>
+
      <SitTargetPositionLL>
+
        <X>0</X>
+
        <Y>0</Y>
+
        <Z>0</Z>
+
      </SitTargetPositionLL>
+
      <SitTargetOrientationLL>
+
        <X>0</X>
+
        <Y>0</Y>
+
        <Z>0</Z>
+
        <W>1</W>
+
      </SitTargetOrientationLL>
+
      <ParentID>0</ParentID>
+
      <CreationDate>1325896997</CreationDate>
+
      <Category>0</Category>
+
      <SalePrice>0</SalePrice>
+
      <ObjectSaleType>0</ObjectSaleType>
+
      <OwnershipCost>0</OwnershipCost>
+
      <GroupID>
+
        <UUID>00000000-0000-0000-0000-000000000000</UUID>
+
      </GroupID>
+
      <OwnerID>
+
        <UUID>57956c4b-ff2e-4fc1-9995-613c6256cc98</UUID>
+
      </OwnerID>
+
      <LastOwnerID>
+
        <UUID>57956c4b-ff2e-4fc1-9995-613c6256cc98</UUID>
+
      </LastOwnerID>
+
      <BaseMask>2147483647</BaseMask>
+
      <OwnerMask>2147483647</OwnerMask>
+
      <GroupMask>0</GroupMask>
+
      <EveryoneMask>0</EveryoneMask>
+
      <NextOwnerMask>2147483647</NextOwnerMask>
+
      <Flags>None</Flags>
+
      <CollisionSound>
+
        <UUID>00000000-0000-0000-0000-000000000000</UUID>
+
      </CollisionSound>
+
      <CollisionSoundVolume>0</CollisionSoundVolume>
+
      <TextureAnimation/>
+
      <ParticleSystem/>
+
      <PayPrice0>-2</PayPrice0>
+
      <PayPrice1>-2</PayPrice1>
+
      <PayPrice2>-2</PayPrice2>
+
      <PayPrice3>-2</PayPrice3>
+
      <PayPrice4>-2</PayPrice4>
+
    </SceneObjectPart>
+
  </RootPart>
+
  <OtherParts/>
+
</SceneObjectGroup>
+
</pre>
+
 
+
 
+
==XML2 format==
+
 
+
Here's the same object as above, but in 'XML2' format.
+
 
+
<pre>
+
<SceneObjectGroup>
+
  <SceneObjectPart xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
    <AllowedDrop>false</AllowedDrop>
+
    <CreatorID>
+
      <UUID>57956c4b-ff2e-4fc1-9995-613c6256cc98</UUID>
+
    </CreatorID>
+
    <FolderID>
+
      <UUID>b06d2e45-650e-4e5d-a08a-b03a6dd67bff</UUID>
+
    </FolderID>
+
    <InventorySerial>0</InventorySerial>
+
    <UUID>
+
      <UUID>b06d2e45-650e-4e5d-a08a-b03a6dd67bff</UUID>
+
    </UUID>
+
    <LocalId>2094307979</LocalId>
+
    <Name>Companion cube</Name>
+
    <Material>3</Material>
+
    <PassTouches>false</PassTouches>
+
    <RegionHandle>1099511628032000</RegionHandle>
+
    <ScriptAccessPin>0</ScriptAccessPin>
+
    <GroupPosition>
+
      <X>81.85081</X>
+
      <Y>157.5245</Y>
+
      <Z>21.32862</Z>
+
    </GroupPosition>
+
    <OffsetPosition>
+
      <X>0</X>
+
      <Y>0</Y>
+
      <Z>0</Z>
+
    </OffsetPosition>
+
    <RotationOffset>
+
      <X>0</X>
+
      <Y>0</Y>
+
      <Z>0</Z>
+
      <W>1</W>
+
    </RotationOffset>
+
    <Velocity>
+
      <X>0</X>
+
      <Y>0</Y>
+
      <Z>0</Z>
+
    </Velocity>
+
    <AngularVelocity>
+
      <X>0</X>
+
      <Y>0</Y>
+
      <Z>0</Z>
+
    </AngularVelocity>
+
    <Acceleration>
+
      <X>0</X>
+
      <Y>0</Y>
+
      <Z>0</Z>
+
    </Acceleration>
+
    <Description/>
+
    <Color>
+
      <R>0</R>
+
      <G>0</G>
+
      <B>0</B>
+
      <A>255</A>
+
    </Color>
+
    <Text/>
+
    <SitName/>
+
    <TouchName/>
+
    <LinkNum>0</LinkNum>
+
    <ClickAction>0</ClickAction>
+
    <Shape>
+
      <ProfileCurve>1</ProfileCurve>
+
      <TextureEntry>iVVnRyTLQ+2SC0fK7RVGXwAAAAAAAAAAgD8AAACAPwAAAAAAAAAAAAAAAAAAAA==</TextureEntry>
+
      <ExtraParams>AA==</ExtraParams>
+
      <PathBegin>0</PathBegin>
+
      <PathCurve>16</PathCurve>
+
      <PathEnd>0</PathEnd>
+
      <PathRadiusOffset>0</PathRadiusOffset>
+
      <PathRevolutions>0</PathRevolutions>
+
      <PathScaleX>100</PathScaleX>
+
      <PathScaleY>100</PathScaleY>
+
      <PathShearX>0</PathShearX>
+
      <PathShearY>0</PathShearY>
+
      <PathSkew>0</PathSkew>
+
      <PathTaperX>0</PathTaperX>
+
      <PathTaperY>0</PathTaperY>
+
      <PathTwist>0</PathTwist>
+
      <PathTwistBegin>0</PathTwistBegin>
+
      <PCode>9</PCode>
+
      <ProfileBegin>0</ProfileBegin>
+
      <ProfileEnd>0</ProfileEnd>
+
      <ProfileHollow>0</ProfileHollow>
+
      <State>0</State>
+
      <ProfileShape>Square</ProfileShape>
+
      <HollowShape>Same</HollowShape>
+
      <SculptTexture>
+
        <UUID>00000000-0000-0000-0000-000000000000</UUID>
+
      </SculptTexture>
+
      <SculptType>0</SculptType>
+
      <SculptData/>
+
      <FlexiSoftness>0</FlexiSoftness>
+
      <FlexiTension>0</FlexiTension>
+
      <FlexiDrag>0</FlexiDrag>
+
      <FlexiGravity>0</FlexiGravity>
+
      <FlexiWind>0</FlexiWind>
+
      <FlexiForceX>0</FlexiForceX>
+
      <FlexiForceY>0</FlexiForceY>
+
      <FlexiForceZ>0</FlexiForceZ>
+
      <LightColorR>0</LightColorR>
+
      <LightColorG>0</LightColorG>
+
      <LightColorB>0</LightColorB>
+
      <LightColorA>1</LightColorA>
+
      <LightRadius>0</LightRadius>
+
      <LightCutoff>0</LightCutoff>
+
      <LightFalloff>0</LightFalloff>
+
      <LightIntensity>1</LightIntensity>
+
      <FlexiEntry>false</FlexiEntry>
+
      <LightEntry>false</LightEntry>
+
      <SculptEntry>false</SculptEntry>
+
    </Shape>
+
    <Scale>
+
      <X>0.5</X>
+
      <Y>0.5</Y>
+
      <Z>0.5</Z>
+
    </Scale>
+
    <SitTargetOrientation>
+
      <X>0</X>
+
      <Y>0</Y>
+
      <Z>0</Z>
+
      <W>1</W>
+
    </SitTargetOrientation>
+
    <SitTargetPosition>
+
      <X>0</X>
+
      <Y>0</Y>
+
      <Z>0</Z>
+
    </SitTargetPosition>
+
    <SitTargetPositionLL>
+
      <X>0</X>
+
      <Y>0</Y>
+
      <Z>0</Z>
+
    </SitTargetPositionLL>
+
    <SitTargetOrientationLL>
+
      <X>0</X>
+
      <Y>0</Y>
+
      <Z>0</Z>
+
      <W>1</W>
+
    </SitTargetOrientationLL>
+
    <ParentID>0</ParentID>
+
    <CreationDate>1325896997</CreationDate>
+
    <Category>0</Category>
+
    <SalePrice>0</SalePrice>
+
    <ObjectSaleType>0</ObjectSaleType>
+
    <OwnershipCost>0</OwnershipCost>
+
    <GroupID>
+
      <UUID>00000000-0000-0000-0000-000000000000</UUID>
+
    </GroupID>
+
    <OwnerID>
+
      <UUID>57956c4b-ff2e-4fc1-9995-613c6256cc98</UUID>
+
    </OwnerID>
+
    <LastOwnerID>
+
      <UUID>57956c4b-ff2e-4fc1-9995-613c6256cc98</UUID>
+
    </LastOwnerID>
+
    <BaseMask>2147483647</BaseMask>
+
    <OwnerMask>2147483647</OwnerMask>
+
    <GroupMask>0</GroupMask>
+
    <EveryoneMask>0</EveryoneMask>
+
    <NextOwnerMask>2147483647</NextOwnerMask>
+
    <Flags>None</Flags>
+
    <CollisionSound>
+
      <UUID>00000000-0000-0000-0000-000000000000</UUID>
+
    </CollisionSound>
+
    <CollisionSoundVolume>0</CollisionSoundVolume>
+
    <TextureAnimation/>
+
    <ParticleSystem/>
+
    <PayPrice0>-2</PayPrice0>
+
    <PayPrice1>-2</PayPrice1>
+
    <PayPrice2>-2</PayPrice2>
+
    <PayPrice3>-2</PayPrice3>
+
    <PayPrice4>-2</PayPrice4>
+
  </SceneObjectPart>
+
  <OtherParts/>
+
</SceneObjectGroup>
+
</pre>
+

Latest revision as of 18:09, 25 October 2012

[edit] Introduction

There are many asset types in OpenSimulator (e.g. notecards, sounds, textures). Each of these has its own distinctive format.

On the whole, asset formats are identical to those used by the Second Life system, since they need to be sent to and understood by a second life client. You can find the details of many of those in the libopenmetaverse library that OpenSimulator uses. However, some are unique to OpenSimulator, in particular the object/prim serialization format.

[edit] Formats

  • Appearance Formats - The primary use of this format, apart from transferring appearance information between simulators and backend services, is to serve as the appearance format for NPCs.
  • Object Formats - Formats used to serialize prim/object and inventory item data for later restoration.
Personal tools
General
About This Wiki