#author("2024-05-03T17:58:43+00:00","default:iseki","iseki") ** LLMesh [#g136d88e] - %%http://wiki.secondlife.com/wiki/Avatar_Appearance#Linden_binary_mesh_file %% 違うフォーマットのよう - http://wiki.secondlife.com/wiki/Mesh/Mesh_Asset_Format - see OpenSim/Region/Physics/Meshing/Meshmerizer.cs: GenerateCoordsAndFacesFromPrimMeshData() #author("2024-05-04T03:40:29+00:00","default:iseki","iseki") *** 概要 [#nf8cf1f4] - [[LLSD]] 形式のメッシュデータ - llmeshデータ = LLSD ヘッダ(LLSDバイナリ) + deflateデータ *** llsd ヘッダ [#d16d1619] - LLSD 形式のバイナリ - [[ヘッダサンプル>./header]] - 以下のサンプルは llmesh のヘッダを JunkBox_Lib で XMLに変換したもの. <llsd> <map> <key>high_lod</key> <map> <key>offset</key> <integer>38760</integer> <key>size</key> <integer>82221</integer> </map> <key>low_lod</key> <map> <key>offset</key> <integer>5356</integer> <key>size</key> <integer>7734</integer> </map> <key>lowest_lod</key> <map> <key>offset</key> <integer>1210</integer> <key>size</key> <integer>4146</integer> </map> <key>medium_lod</key> <map> <key>offset</key> <integer>13090</integer> <key>size</key> <integer>25670</integer> </map> <key>physics_convex</key> <map> <key>offset</key> <integer>805</integer> <key>size</key> <integer>405</integer> </map> <key>skin</key> <map> <key>offset</key> <integer>0</integer> <key>size</key> <integer>805</integer> </map> </map> </llsd> *** ボディ [#p37d3374] - deflate で圧縮された LLSD バイナリ - 以下のサンプルは llmesh のボディを JunkBox_Lib で XMLに変換したもの. -- <binary> の内容は長いので,省略している. - 座標などのバイナリデータは 符号なし16bit整数を Min,Max 間で正規化したもの.法線ベクトルは -1.0~1.0 間で正規化. <llsd> <array> <map> <key>Normal</key> <binary>QF2Il+v48r68nh...</binary> <key>Position</key> <binary>4KLPjv/prrfPjp...</binary> <key>PositionDomain</key> <map> <key>Max</key> <array> <real>0.500000</real> <real>0.500000</real> <real>0.500000</real> </array> <key>Min</key> <array> <real>-0.500000</real> <real>-0.500000</real> <real>-0.500000</real> </array> </map> <key>TexCoord0</key> <binary>/Fq5goNaFnY/a8...</binary> <key>TexCoord0Domain</key> <map> <key>Max</key> <array> <real>0.983160</real> <real>0.987910</real> </array> <key>Min</key> <array> <real>0.003640</real> <real>0.009650</real> </array> </map> <key>TriangleList</key> <binary>AAABAAIAAgADA...</binary> <key>Weights</key> <binary>Bv///wb///8G/...</binary> </map> <map> <key>Normal</key> <binary>NJn/f4ECe2wSk...</binary> <key>Position</key> <binary>tIG7flu4QnWYh...</binary> <key>PositionDomain</key> <map> <key>Max</key> <array> <real>0.500000</real> <real>0.500000</real> <real>0.500000</real> </array> <key>Min</key> <array> <real>-0.500000</real> <real>-0.500000</real> <real>-0.500000</real> </array> </map> <key>TexCoord0</key> <binary>3+CJrOLaOJnN...</binary> <key>TexCoord0Domain</key> <map> <key>Max</key> <array> <real>0.993510</real> <real>0.985410</real> </array> <key>Min</key> <array> <real>0.007760</real> <real>0.006590</real> </array> </map> <key>TriangleList</key> <binary>AAABAAIAAwA...</binary> <key>Weights</key> <binary>Bv///wb///8...</binary> </map> <map> <key>Normal</key> <binary>HO2LnwK78MJ...</binary> <key>Position</key> <binary>RNUAiErWI88...</binary> <key>PositionDomain</key> <map> <key>Max</key> <array> <real>0.500000</real> <real>0.500000</real> <real>0.500000</real> </array> <key>Min</key> <array> <real>-0.500000</real> <real>-0.500000</real> <real>-0.500000</real> </array> </map> <key>TexCoord0</key> <binary>FB1RibIfWZZ...</binary> <key>TexCoord0Domain</key> <map> <key>Max</key> <array> <real>0.689960</real> <real>0.993080</real> </array> <key>Min</key> <array> <real>0.001510</real> <real>0.015280</real> </array> </map> <key>TriangleList</key> <binary>AAABAAIAA...</binary> <key>Weights</key> <binary>Bv///wb/8...</binary> </map> <map> <key>Normal</key> <binary>Nn5CoNn7k...</binary> <key>Position</key> <binary>U7WMgE+uV...</binary> <key>PositionDomain</key> <map> <key>Max</key> <array> <real>0.500000</real> <real>0.500000</real> <real>0.500000</real> </array> <key>Min</key> <array> <real>-0.500000</real> <real>-0.500000</real> <real>-0.500000</real> </array> </map> <key>TexCoord0</key> <binary>rwRMHrYDWB6...</binary> <key>TexCoord0Domain</key> <map> <key>Max</key> <array> <real>0.998020</real> <real>0.999050</real> </array> <key>Min</key> <array> <real>0.007630</real> <real>0.000000</real> </array> </map> <key>TriangleList</key> <binary>AAABAAIAgA...</binary> <key>Weights</key> <binary>BP///wT///...</binary> </map> <map> <key>Normal</key> <binary>zHuw+jikCI...</binary> <key>Position</key> <binary>7qe3lX0Dkr...</binary> <key>PositionDomain</key> <map> <key>Max</key> <array> <real>0.500000</real> <real>0.500000</real> <real>0.500000</real> </array> <key>Min</key> <array> <real>-0.500000</real> <real>-0.500000</real> <real>-0.500000</real> </array> </map> <key>TexCoord0</key> <binary>sNIaTrXZyF...</binary> <key>TexCoord0Domain</key> <map> <key>Max</key> <array> <real>0.993160</real> <real>1.000000</real> </array> <key>Min</key> <array> <real>0.000000</real> <real>0.005020</real> </array> </map> <key>TriangleList</key> <binary>AAABAAIAAwAE...</binary> <key>Weights</key> <binary>EP9/D/9//xD/...</binary> </map> <map> <key>Normal</key> <binary>CPN2nTpQwO3/...</binary> <key>Position</key> <binary>2r+cjsp4vcP/...</binary> <key>PositionDomain</key> <map> <key>Max</key> <array> <real>0.500000</real> <real>0.500000</real> <real>0.500000</real> </array> <key>Min</key> <array> <real>-0.500000</real> <real>-0.500000</real> <real>-0.500000</real> </array> </map> <key>TexCoord0</key> <binary>E6TCIeOjtCg...</binary> <key>TexCoord0Domain</key> <map> <key>Max</key> <array> <real>0.991700</real> <real>0.995860</real> </array> <key>Min</key> <array> <real>0.007720</real> <real>0.010140</real> </array> </map> <key>TriangleList</key> <binary>AAABAAIAADAA...</binary> <key>Weights</key> <binary>DP///wz///8M...</binary> </map> </array> </llsd> **** [[lod sample>./lod]] #br #ls2