Asset Formats

From OpenSimulator

(Difference between revisions)
Jump to: navigation, search
(XML2 format)
(Formats)
 
(15 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.  As you can see, the format is identical except that there is no <RootPart> tag around the root part - it is assumed to be simply the first part instead.
+
 
+
<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 19: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.
General
About This Wiki