版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
IVIVII空间三维模型瓦片数据格式目 次前言 V引言 VI1范围 1规性用件 1术和义 1符和略语 2略语 2UML示号 3UML多性述 3基规定 3本据型 3符类型 4组型 4JSON格存储 4期时表示 4总结构 4片结构 4据文组成 5文存格式 6述件 6据件 9引文件 35性述件 36性据件 37附录A(料)用例 39用例述 39于C++写SDK数据写例 39A.3osgb格转为s3mb格的例 40A.43DTiles数转为s3mb数的例 40A.5obj式换为s3mb格式示例 41附录B(料)件容示例 42述件例 42质容例 44引文示例 48性述件例 50性据件例 51附录C(料)MongoDB存储例 53C.1MongoDB储述 53储构计 53据例 56附录D(范)用何压技的架象 62储构 62进流述 62参考献 64图1TileTree结示图 5图2TileTree的UML图 5图3Config的UML图 7图4Tile对的UML图 10图5LODPackage的UML图 11图6Patch象的UML图 12图7Animation象的UML图 13图8动时示图 15图9ModelElements的UML图 15图10压的Skeleton对的UML图 16图11CommonPass对的UML图 20图12PBRPass对的UML图 23图13Texture对的UML图 26图14IDInfo对的UML图 27图15实化据示例 28图16例数存例 29图17据件进据包 29图18性据件制流构 37表1UML示号照表 3表2UML多性述 3表3基数类规定 3表4文组形式 6表5Config象标义 7表6Rect对各签义 8表7HeightRange象标签义 8表8CategoryDescript象各签义 8表9Range对各签义 9表10Position对各签含义 9表11Point3D对各签含义 9表12TileTreeInfo对各标含义 9表13BoundingBox对象标签义 9表14Tile对各性义 10表15LODPackage象属性义 11表16RangeMode象举值义 11表17BoundingSphere象各性义 11IVIVIIIIII表18Patch象属义 12表19Matrix4D对象各性含义 12表20Animation象签含义 13表21AnimationNode各标含义 13表22AnimationSkin各标含义 14表23AnimationContent对象标含义 14表24KeyframeAnimation对象标含义 14表25SkinnedWeight_0象各性义 14表26SkinnedJoint_0象各性义 15表27ModelElements各属含义 15表28无缩的Skeleton对象属含义 17表29VertexDataPackage对象属含义 17表30TextureCoord对各属含义 18表31InstanceInfo对各属含义 18表32InstanceObject象各性义 18表33VertexAttributeExtension象属含义 18表34VertexAttribute象各性义 18表35VertexAttributeType象枚含义 19表36IndexPackage对各属含义 19表37VertexIndexType象各举含义 19表38DrawPrimitiveType对象枚值义 19表39Material对各签含义 20表40CommonPass象标签义 20表41ColorValue象标签义 21表42CullingMode对象枚举含义 21表43AlphaMode象各举值义 21表44TextureUnitState对象标含义 21表45TextureAddressingMode对各举含义 22表46FilterOptions各枚值义 22表47PBRPass对各含义 23表48Vector4对各含义 25表49TextureMotionParameter对各签义 25表50Vector3对各含义 25表51Texture对各含义 26表52TextureData对各属性义 26表53TextureCompressType枚值义 26表54PixelFormat各值含义 27表55IDInfo象属含义 27表56SkeletonIDInfo象各性义 28表57MonomerIDInfo各属含义 28表58SegmentIDInfo各属含义 28表59Extensions象标签义 29表60索树件标含义 35表61TileInfo对象各签含义 35表62Status象标含义 36表63属描文各签含义 36表64LayerFieldInfo象各签义 36表65IDRange对各含义 37表66FieldInfo象签含义 37表67属数文各签含义 37表68LayerAttributeValue象标含义 38表69Record象标含义 38表70Value象标义 38表C.1metadatas_s3m合的段息 53表C.2metadatas_s3m合Name段值含义 53表C.3Position象签含义 54表C.4Rect象标义 54表C.5HeightRange对各标含义 54表C.6CategoryDescript对象标义 5表C.7Range象标含义 55表C.8TileInfo象签含义 55表C.9Point3D对各签含义 55表C.10BoundingBox各标含义 55表C.11Vector3象签含义 55表C.12据合字信息 56表D.1用何缩的Skeleton象属义 62表D.2CompressedDataPackage对各性义 621111VIVI引 言移)目前,本文件支持表示以下不同类型的数据:——人工建模数据:采用3dsMax、SketchUp等三维建模软件生产和构建的三维模型数据;——倾斜摄影三维模型数据:采用倾斜摄影技术,经模型重建等技术流程生成的三维模型数据;——点云数据:基于激光雷达等获取的三维点云数据;(BuildingInformationModeling,BIM)BIM——二维、三维点/线/面对象数据;——二维、三维拓扑网络数据;——外挂模型数据。A空间三维模型瓦片数据格式范围(GB/T7408数据元和交换格式信息交换日期和时间表示法GB/T16831基于坐标的地理点位置标准表示法GB/T30170地理信息基于坐标的空间参照GB/T30320地理空间数据访问接口GB/T33187.1—2016地理信息简单要素访问第1部分:通用架构下列术语和定义适用于本文件。3.1瓦片tile按照指定的空间范围规则对空间数据进行划分形成的若干数据单元。空间相邻的瓦片之间空间范围可重叠。3.2瓦片树tiletree(313.3根节点瓦片roottile(3.2)3.4瓦片树集tiletreesetPAGEPAGE3PAGEPAGE10由一个或多个瓦片树(3.2)构成的集合。3.5细节层次数据包LODpackage3.6数据片patch构成细节层次数据包(3.5)的数据组织单元。每个细节层次数据包(3.5)包含零个或多个数据片。3.7模型元素modelelement数据片(3.6)的基本数据构成,包括骨架、材质、纹理三种元素类型。3.8实例化instancing3.9语义纹理semantictexture一张包含三维模型语义细节的纹理图片,用于存储像素级的语义信息。3.10掩膜纹理masktexture一张通过不同颜色记录三维模型表面不同区域的纹理图片。下列缩略语适用于本文件。BOM:字节顺序标记(ByteOrderMark)EPSG:欧洲石油调查组织(TheEuropeanPetroleumSurveyGroup)HTML:超文本标记语言(HyperTextMarkupLanguage)ID:身份标识号(IDentity)IETF:互联网工作任务组(InternetEngineeringTaskForce)JSON:JavaScript对象表示法(JavaScriptObjectNotation)LOD:细节层次(LevelofDetail)PBR:基于物理的渲染(Physically-BasedRendering)RFC:请求评论(RequestforComments)s3mb:二进制空间三维模型(spatial3Dmodelbinary)UML:统一建模语言(UnifiedModellingLanguage)WKT:常用文本表示(Well-KnownTextrepresentation)UML本文件使用UML静态结构图呈现对象之间的逻辑结构。所有UML图示中符号表示的规定见表1。表1 UML示号照表符号名称说明单向关联表示A、B两个类之间的关联关系,A类知道B类的公共属性和方法,但B类不知道A类的公共属性和方法聚合A对象拥有B对象,A对象可以包含B对象,但B对象不是A对象的组成部分,二者生命周期可以不同组合A对象拥有B对象,是整体和部分的关系,且生命周期一致依赖A对象依赖于B对象,表示A对象使用B对象,B对象的改变有可能影响A对象UMLUML图中多样性描述含义见表2。表2 UML多性述多样性意义0..10个或1个1只能1个0..n0个或多个1..n1个或多个本文件涉及的计算机编程语言中的基本数据类型规定见表3。表3 基本据型定类型字节数取值范围描述char1[-128,127]字符型wchar2[-32768,32767]宽字符类型byte1[0,255]无符号单字节bool10|1布尔型int162[-32768,32767]短整型uint162[0,65535]无符号短整型int324[-2147483648,2147483647]整型uint324[0,4294967295]无符号整型表3 基本据型定续)类型字节数取值范围描述int648[-263,(263-1)]长整型uint648[0,(264-1)]无符号长整型float4[-3.40×1038,3.40×1038]单精度浮点型double8[-1.79×10308,1.79×10308]双精度浮点型字符串数据类型应用String对象描述,采用Unicode编码,字符集规定为UTF-8。UTF-8的相关信息见RFC3629。String{int32length;//字节数bytestr[length];//数据内容}数组类型应用Array<Type>对象描述,Type为数组中元素的数据类型。JSONJSON格式应按UTF-8编码方式存储,不包含BOM文件头。JSON格式的相关信息见RFC8259。日期与时间数据类型的表示应符合GB/T7408的规定。本文件采用树形数据结构组织地理空间数据。一份数据通过瓦片树集(TileTreeSet)来组织,TileTreeSet可包含一个或多个瓦片树(TileTree)。TileTree结构示意如图1所示。B1B2B3为A0的子节点Tile,COC1C2C3为B0的子节点Tile注2:AO由四个细节层次数据包(LODPackage)构成,每个LODPackage由多个数据片(Patch)构成。注3:LODPackage0挂接了一个childtile,指向下一层级的TileB0。图1 TileTree结示图TileTree的UML图见图2,具体如下:TileTreeTileTileTile(LODPackage);1..nchildtile0..11..n0..nPatchLODPackageTileTileTreeLODPackage(Patch),PatchLODPackageLODPackage1..nchildtile0..11..n0..nPatchLODPackageTileTileTree图2 TileTree的UML图必备文件包括:TileTreeSetTileTree中RootTile路径等;Tile可选文件包括:TileTreeLODTileLODTileTreeSetGB/T30320的规定;TileTree各类文件的组织形式见表4。数据示例见附录B。数据可存储在多种数据库中,宜采用键值对(Key-Value)的结构存储,相关示例见附录C。表4 文件织式文件类型文件命名说明必备或可选描述文件TileTreeSet.jsonTileTreeSet对应一个描述文件必备数据文件*.s3mb一个Tile对应一个数据文件必备索引树文件*.json一个TileTree对应一个或多个索引树文件与TileTree的RootTile同级目录可选属性描述文件attribute.jsonTileTreeSet对应一个属性描述文件与描述文件同级目录可选属性数据文件*.s3md一个TileTree对应一个属性数据文件与TileTree的RootTile同级目录可选注:*表示文件名可自定义,其中,索引树文件名和属性描述文件名与RootTile名相同。(ConfigUML3图3 Config象的UML图描述文件,即Config对象,各标签含义见表5。表5 Config象标含义标签名类型描述assetString数据的基本信息,如生产单位等versionString版本号dataTypeString地理空间数据的类型AtfcaMdleltMsPitlod网络数据和外挂模型pyramidSplitTypeString数据的空间划分类型‘Gi‘iaypcPriioigre‘nreeTe}lodTypeStringLOD切换到精细层时,精细层Tile数据的处理方式取值范围:{‘Add’,‘Replace’}分别对应:添加到当前层,替换当前层geoBoundsRectRectcrsRect对象各标签含义见表6heightRangeHeightRange数据的高度范围,用HeightRange对象表示,HeightRange对象各标签含义见表7标签名类型描述vertexAttributeDescriptArray<CategoryDescript>顶点扩展属性的含义描述信息和数值范围,用CategoryDescript对象构成的数组表示。CategoryDescript对象各标签含义见表8顶点扩展属性记录用户自定义扩展的顶点属性,具体见表33positionPosition整个TileTreeSetPositionPosition对象各标签含义见表10标签名类型描述vertexAttributeDescriptArray<CategoryDescript>顶点扩展属性的含义描述信息和数值范围,用CategoryDescript对象构成的数组表示。CategoryDescript对象各标签含义见表8顶点扩展属性记录用户自定义扩展的顶点属性,具体见表33positionPosition整个TileTreeSetPositionPosition对象各标签含义见表10crsString坐标系信息,可表述任何按照GB/T30170型crs可以是epsg或wkt,contentepsg形式的表述格式示例:crs:{‘epsg:4490’}wkt形式的表述格式:crs:{‘wkt:wktcontent’}wktcontent应符合GB/T33187.1—2016中6.4的规定rootTilesArray<TileTreeInfo>TileTreeSetRootTileTileTreeInfo数组表示。TileTreeInfo对象各标签含义见表12idFieldNameStringIDInfo中单体对象ID的属性字段名,单体对象ID见表57(atrbtjsn中ilIfoFieldInfo见表66compressedPackageTypeString数据文件(.s3mb)的压缩类型取值范围:{‘None’,‘Zip’,‘Gzip’}分别对应:无压缩、zip压缩、gzip压缩extensionsString用户自定义的扩展信息。表6 Rect对各签义标签名类型描述leftdouble数据地理范围的左值topdouble数据地理范围的上值rightdouble数据地理范围的右值bottomdouble数据地理范围的下值表7 HeightRange象标含义标签名类型描述mindouble最小值maxdouble最大值表8 CategoryDescript对标签义标签名类型描述categoryString顶点扩展属性的含义描述信息rangeRangeRangeRange9表9 Range对各签义标签名类型描述dimensionuint16数据的维度数minArray<double>每个维度的最小值构成的数组,数组长度等于dimensionmaxArray<double>每个维度的最大值构成的数组,数组长度等于dimension表10 Position对各签义标签名类型描述point3DPoint3DPoint3DGB/T16831定。Point3D对象各标签含义见表11unitString空间坐标值的单位取值范围:{‘Degree’,‘Meter’}分别对应:度、米表11 Point3D象标含义标签名类型描述xdouble空间点的x坐标值ydouble空间点的y坐标值zdouble空间点的z坐标值表12 TileTreeInfo对各含义标签名类型描述urlStringRootTile径,则为相对于描述文件所在位置的路径boundingBoxBoundingBoxRootTileBoundingBoxBoundingBox含义见表13表13 BoundingBox象标含义标签名类型描述centerPoint3D包围盒中心点,用Point3D对象表示。Point3D对象各标签含义见表11xExtentVector3xVector3Vector350yExtentVector3yVector3Vector350zExtentVector3zVector3Vector350数据文件(Tile对象)是数据的主要组成部分,主要由LODPackage、ModelElements、IDInfo和Extensions四个对象构成。Tile对象的UML图见图4,对象各属性含义见表14。 图4 Tile对的UML图表14 Tile对各性属性名类型描述optionsuint32扩展标识信息,默认值为0。值为1时,表示Tile包含IDInfo对象lodPackageCountint32Tile中LODPackage对象的个数lodPackagesArray<LODPackage>Tile中所有LODPackage的集合。LODPackage对象各属性含义见表15modelElementsModelElementsTile的模型元素信息集合,用ModelElements对象表示,ModelElements对象各属性含义见表27idInfoRepresentationOptionuint32IDInfo1IDInfo2IDInfoJSON表述idInfoIDInfoTile的模型ID信息,用IDInfo对象表示,IDInfo对象各属性含义见表55extensionsString数据扩展信息字符串(JSON格式),extensions对象各标签含义见表59LODLODPackage515图5 LODPackage象的UML图表15 LODPackage象属属性名类型描述rangeValuefloatLOD切换的阈值因子,与LOD切换模式配合使用rangeModeRangeModeLODLODLODRangeMode对象表示,RangeMode对象各枚举值含义见表16boundingSphereBoundingSphereBoundingSphereBoundingSphere义见表17boundingBoxBoundingBoxBoundingBoxBoundingBox13strChildTileString挂接的下一层级的数据文件相对于当前文件的路径patchCountint32数据片的个数patchesArray<Patch>PatchPatch表18animationsString动画字符串(JSON)AnimationAnimation标签含义见表20表16 RangeMode对各举含义枚举名类型含义Distance_From_EyePointint32基于距离的LOD选取,距离通常是指瓦片与视点之间的距离Pixel_Size_OnScreenint32基于投影面积的LOD数Geometric_Errorint32基于几何误差模式的LOD选取表17 BoundingSphere象性含义属性名类型描述xdouble包围球中心点的x坐标值ydouble包围球中心点的y坐标值表17 BoundingSphere象性含()属性名类型描述zdouble包围球中心点的z坐标值rdouble包围球半径是构成LODPackagePatch存在聚合PatchUML618图6 Patch对的UML图表18 Patch对各性属性名类型描述matrix4dMatrix4DMatrix4D表示。Matrix4D对象各属性含义见表19skeletonCountint32Patch中骨架对象的数量skeletonNamesArray<String>PatchModelElments5dataTypeInstanceModel路径的数组表19 Matrix4D对各性义属性名类型描述valuesArray<double>×矩阵,16个double值表示,行主序LODPackagePatchAnimation对象应采用JSON格式表述,包括动画节点(AnimationNode)对象、动画蒙皮AnimationUML20AnimationSkin对象记录关节信息,与AnimationNode对象中记录的指定Patch中的蒙皮信息,共同确定骨骼动画的初始状态。AnimationContent对象控制动画的帧状态及动作时长等。extension29中extension25标签名类型描述nodesArray<AnimationNode>AnimationNodeAnimationNode对象各标签含义见表21skinsArray<AnimationSkin>AnimationSkinAnimationSkin对象各标签含义见表22animationContentsArray<AnimationContent>AnimationContentAnimationContent对象各标签含义见表23图7 Animation对的标签名类型描述nodesArray<AnimationNode>AnimationNodeAnimationNode对象各标签含义见表21skinsArray<AnimationSkin>AnimationSkinAnimationSkin对象各标签含义见表22animationContentsArray<AnimationContent>AnimationContentAnimationContent对象各标签含义见表23。表21 AnimationNode对各签含义标签名类型描述nodeNameString动画节点名称skinIndexint32使用的AnimationSkin在skins数组中的索引号。skins见表20patchIndexint32使用的PatchLODPackagepatchespatches15childNodeIndexesArray<int32>子节点在nodes数组中的索引号构成的数组。nodes见表20表22 AnimationSkin对各签含义标签名类型描述skinNameString蒙皮名称jointNodeIndexesArray<int32>nodes引号构成,nodes见表20inverseBindMatricesArray<Matrix4D>Matrix4D组长度与jointNodeIndexes的数组长度相同。Matrix4D对象各标签含义见表19表23 AnimationContent对标签标签名类型描述animationNameString动画名称timePositiondouble当前动画所处的时间位置timeLengthdouble总动画时间的长度,单位为秒startTimedouble起始时间endTimedouble结束时间keyframeAnimationsArray<KeyframeAnimation>KeyframeAnimation示,KeyframeAnimation对象各标签含义见表24表24 KeyframeAnimation对各标含义标签名类型描述patchIndexint32使用的Patch在LODPackage里patches中的索引号pathString变换类型scleoaintasainwihsframePositionsArray<double>指定的动画的帧在总动画时间中的位置构成的数组transformationsArray<Variant>变换数值构成的数组当变换类型为缩放或平移时,Variant类型为Vector3当变换类型为旋转时,Variant类型为Vector4当变换类型为权重时,Variant类型为doubleVector3对象各标签含义见表50,Vector4对象各标签含义见表48表25 SkinnedWeight_0象属性义属性名类型描述countuint32影响的顶点的数量dimensionuint16影响一个顶点的关节数量,默认为4vertexAttributetypeVertexAttributeType见表35dataArray<float>蒙皮权重数组,数组长度为count*dimension表26 SkinnedJoint_0象性含义属性名类型描述countuint32影响的顶点的数量dimensionuint16影响一个顶点的关节数量,默认为4vertexAttributetypeVertexAttributeType蒙皮关节的数据类型,取值为AT_16BIT,VertexAttributeType见表35dataArray<uint16>蒙皮关节数组,数组长度为count*dimension一个动画的总时长由timeLength确定,timePosition记录当前动画所处的时间位置,startTime规定开始执行动画的时间,endTime规定结束执行动画的时间,framePositions规定关键帧动画中指定动画的时间,示例见图8。单位为秒注1:timePosition=3.0,代表当前动画所处时间为第3秒;timeLength=8.0,代表动画总时长为8秒。注2:translation(平移)的framePositions数组为[0.0,1.0,2.0,3.0,4.0]。注3:scale(缩放)的framePositions数组为[4.0,5.0,6.0,7.0,8.0]。图8 动画间例图(Skeleton)UML27。属性名类型描述skeletonCountint32Tile中骨架对象的数量图9 ModelElements对的UML图表27 ModelElements象性含属性名类型描述skeletonCountint32Tile中骨架对象的数量表27 ModelElements对各性含()属性名类型描述skeletonsArray<Skeleton>Tile中骨架对象集合,用Skeleton对象构成的数组表示。Skeleton对象各属性含义见表28或表D.1textureCountint32Tile中纹理对象的数量texturesArray<Texture>TieTetre对象各属性含义见表51materialsStringTile(JSON,用多个Material示,Material对象各标签含义见表39SkeetoeletoVerteDatPacage)(IndexPackage)VertexDataPackage等,可包含实例化信息集合(InstanceInfos)。IndexPackage对象用于定义骨架结构构造,每个IndexPackageSkeletonSkeletonUML图见图10,28SkeletonD图10 无压的Skeleton对的UML图表28 无压的Skeleton对属性义属性名类型描述nameString骨架对象的名称optionsuint3201时,表示压缩vertexDataPackagesVertexDataPackageVertexDataPackageVertexDataPackage对象各属性含义见表29indexpackageCountint32骨架中顶点索引包的数量indexPackagesArray<IndexPackage>IndexPackageIndexPackage对象各属性含义见表36boundingBoxBoundingBoxBoundingBoxBoundingBox见表13表29 VertexDataPackage对各属含义属性名类型描述vertexCountuint32顶点的数量vertexDimensionuint16顶点维度vertexStrideuint16中单个顶点的所有元素所占的字节总数。如果顶点维度为3,则该值为3*4a=12vertexDataArray<float>顶点坐标值数组normalCountuint32法线的数量normalDimensionuint16法向量的维度normalStrideuint16占的字节总数。如果法向量的维度为3,则该值为3*4a=12normalDataArray<float>法向量分量值构成的数组vertexColorCountuint32顶点颜色值的数量vertexColorStrideuint16字节总数,默认为4avertexColorDataArray<unit32>顶点颜色数组textureCoordCountuint16纹理坐标对象的数量textureCoordsArray<TextureCoord>TextureCoord对象各属性含义见表30instanceInfoCountuint16实例化信息的数量instanceInfosArray<InstanceInfo>实例化信息集合,用InstanceInfo对象构成的数组表示。InstanceInfo对象各属性含义见表31extensionVertexAttributeExtensionVertexAttributeExtension对象表示,VertexAttributeExtension对象各属性含义见表33tangentCountuint32切线的数量tangentDimensionuint16切向量的维度tangentStrideuint16节总数。如果切向量的维度为3,则该值为3*4a=12表29 VertexDataPackage对各属含()属性名类型描述tangentDataArray<float>切向量分量值构成的数组a元素所在数组为float数组或uint32数组,一个float值/uint32值具有4个字节,因此一个元素占4个字节。属性名类型描述coordsCountuint32纹理坐标的数量dimensionuint16纹理坐标维度strideuint16属性名类型描述coordsCountuint32纹理坐标的数量dimensionuint16纹理坐标维度strideuint16datafloat422*4=8dataArray<float>纹理坐标值数组。表31 InstanceInfo对各含义属性名类型描述instanceCountuint32实例化对象的数量instanceObjectsArray<InstanceObject>实例化对象集合,用InstanceObject对象构成的数组表示。InstanceObject对象各属性含义见表32表32 InstanceObject象性含义属性名类型描述countuint16实例化对象变换矩阵值的数量。取值范围:{‘16’}matrixValuesArray<float>4×4实例化对象变换矩阵表33 VertexAttributeExtension对各性义属性名类型描述vertexAttributeCountuint32顶点扩展属性数组的数量vertexAttributesArray<VertexAttribute>VertexAttribute示,VertexAttribute对象各属性含义见表34descriptString顶点扩展属性数组的语义描述信息,采用JSON格式表述表34 VertexAttribute象属性属性名类型描述countuint32顶点属性的数量dimensionuint16顶点属性的维度vertexAttributetypeVertexAttributeType顶点属性的数据类型,用VertexAttributeType对象表示。VertexAttributeType对象各枚举含义见表35dataArray<Variant>IntergerFloat数组或Double数组表35 VertexAttributeType象各举义枚举名类型描述AT_32BITint3232位无符号整型AT_FLOATint32单精度浮点型AT_DOUBLEint32双精度浮点型AT_16BITint3216位无符号短整型表36 IndexPackage对各含义属性名类型描述indexCountuint32顶点索引个数indexTypeVertexIndexTypeVertexIndexTypeVertexIndexType对象各枚举含义见表37isUseIndexbool是否使用索引drawPrimitiveTypeDrawPrimitiveTypeDrawPrimitiveTypeDrawPrimitiveType对象各枚举含义见表38indexDataArray<Variant>顶点索引值数据,根据顶点索引类型,可以是Short数组或Integer数组passCountint32渲染该对象时使用的Pass对象的数量。Pass对象见表39passNamesArray<String>渲染该对象时使用的Pass对象的名称。Pass对象见表39表37 VertexIndexType象枚举含义枚举名类型描述IT_16BITint3216位无符号整型IT_32BITint3232位无符号整型注:一般根据顶点的个数选择顶点索引类型,顶点的个数大于65535则采用IT_32BIT,否则采用IT_16BIT。表38 DrawPrimitiveType对各枚值义枚举名类型描述DPT_POINT_LISTint32点DPT_LINE_LISTint32线DPT_LINE_STRIPint32条带线DPT_TRIANGLE_LISTint32独立三角形DPT_TRIANGLE_STRIPint32三角形条带DPT_TRIANGLE_FANint32三角形扇面DPT_QUAD_STRIPint32四边形条带DPT_QUAD_LISTint32四边形串,不共享边DPT_POLYGONint32多边形JSONMaterialCommonPassPBRPassMaterial39B.2表39 Material对各签义标签名类型描述nameString材质的名称typeString材质类型取值范围:{‘commonR’}分别对应:普通材质、PBRpassVariantCommonPassPBRPassCommonPass对象各标签含义见表40,PBRPass对象各标签含义见表47普通材质(CommonPass)对象可定义色彩、纹理、透明度、反射率、折射率、发光度等可视化属性。CommonPass对象的UML图见图11,对象各标签含义见表40。标签名类型描述ambientColorValueColorValueColorValue标签含义见表41diffuseColorValueColorValueColorValue标签含义见表41图11 CommonPass象的标签名类型描述ambientColorValueColorValueColorValue标签含义见表41diffuseColorValueColorValueColorValue标签含义见表41表40 CommonPass象标义()标签名类型描述specularColorValueColorValueColorValue标签含义见表41shininessfloat光泽度,影响反射光的高光部分的强度cullModeCullingModeCullingModeCullingMode义见表42alphaModeAlphaModeAlphaModeAlphaMode表43alphaCutofffloat透明度过滤阈值,用于判断材质是否渲染AlphaModeAM_MASKaalpha值进行比较,小于该阈值的alpha值所对应的材质不渲染vertexShaderNameString顶点着色器a名称fragmentShaderNameString片元着色器a名称textureStatesArray<TextureUnitState>TextureUnitState示。TextureUnitState对象各标签含义见表44extensionsString自定义扩展材质的信息a着色器程序以及源代码,依据具体的运行环境而自行配置。表41 ColorValue象标义标签名类型描述rdouble红色分量值,取值范围0.0到1.0gdouble绿色分量值,取值范围0.0到1.0bdouble蓝色分量值,取值范围0.0到1.0adouble透明度分量值,取值范围0.0到1.0表42 CullingMode象枚值含义枚举名类型描述CULL_NONEint32无裁剪模式CULL_CLOCKWISEint32顺时针裁剪模式CULL_ANTICLOCKWISEint32逆时针裁剪模式表43 AlphaMode对各举含义枚举名类型描述AM_OPAQUEint32完全不透明AM_MASKint32遮罩模式,用于选择性控制可见的对象AM_BLENDint32混合模式表44 TextureUnitState对标签标签名类型描述textureNameString纹理名字表44 TextureUnitState对标签义续)标签名类型描述urlString相对路径,则为相对于描述文件所在位置的路径uAddressModeTextureAddressingMode纹理坐标u方向上纹理坐标寻址模式,用纹理处理模式TextureAddressingModeTextureAddressingMode45vAddressModeTextureAddressingMode纹理坐标v方向上纹理坐标寻址模式,用纹理处理模式TextureAddressingModeTextureAddressingMode45wAddressModeTextureAddressingMode纹理坐标w方向上纹理坐标寻址模式,用纹理处理模式TextureAddressingModeTextureAddressingMode45filteringOptionFilterOptionsFilterOptionsFilterOptions各枚举含义见表46minFilterFilterOptions纹理缩小时采用的插值模式,用FilterOptions对象表示。FilterOptions对象各枚举含义见表46maxFilterFilterOptions纹理放大时采用的插值模式,用FilterOptions对象表示。FilterOptions对象各枚举含义见表46matrixMatrix4D纹理缩放矩阵,用Matrix4D对象表示,Matrix4D对象见表19表45 TextureAddressingMode对象枚值义枚举名类型描述TAM_WRAPint32重复贴图TAM_MIRRORint32对称翻转TAM_CLAMPint32边缘像素来填充所有大于1的纹理坐标,边缘拉长TAM_BORDERint32边框像素来填充所有大于1的纹理坐标,边框拉长表46 FilterOptions对各举值义枚举名类型描述FO_NONEint32无过滤FO_POINTint32邻近取样FO_LINEARint32双线过滤FO_TRILINEARint32三线过滤FO_ANISOTROPICint32各向异性过滤PBRPBR(Physically-basedrendering)PBRPBRPassPBRPassUML12,47标签名类型描述baseColorVector4基色,即物体的基础颜色,用Vector4对象表示。Vector4对象各标签含义见表48baseColorTextureIndexint32基色纹理在纹理数组(textureStates)中的序号baseColorTextureCoordIndexint32见表29baseColorTextureMotionTextureMotionParameter基色纹理运动的参数对象,用TextureMotionParameter 对 象标签名类型描述baseColorVector4基色,即物体的基础颜色,用Vector4对象表示。Vector4对象各标签含义见表48baseColorTextureIndexint32基色纹理在纹理数组(textureStates)中的序号baseColorTextureCoordIndexint32见表29baseColorTextureMotionTextureMotionParameter基色纹理运动的参数对象,用TextureMotionParameter 对 象 表 示 TextureMotionParameter对象各标签含义见表49metallicFactorfloat控制金属度强弱的因子roughnessFactorfloat控制粗糙度强弱的因子metallicRoughnessTextureIndexint32金属度和粗糙度纹理在纹理数组(textureStates中的序号(R通道存储金属度,G通道存储粗糙度)表47 PBRPass象标含(续)标签名类型描述metallicRoughnessTextureCoordIndexint32金属度和粗糙度纹理的纹理坐标在纹理坐标数组29normalTextureIndexint32线用于表达物体表面的凹凸细节normalTextureCoordIndexint3229normalTextureScalefloat法线纹理缩放因子occlusionTextureIndexint32挡用于表达物体表面凹凸性对光照的影响occlusionTextureCoordIndexint3229occlusionTextureStrengthfloat遮挡纹理的强度因子emissiveFactorVector3自发光强度因子,用Vector3对象表示。Vector3对象各标签含义见表50emissiveTextureIndexint32自发光纹理在纹理数组(textureStates)中的序号emissiveTextureCoordIndexint3229emissiveTextureMotionTextureMotionParameter自发光纹理运动的参数对象,用TextureMotionParameter 对 象 表 示 TextureMotionParameter对象各标签含义见表49maskTextureIndexint32掩膜纹理在纹理数组(textureStates)中的序号maskTextureCoordIndexint3229semanticTextureIndexint32语义纹理在纹理数组(textureStates)中的序号semanticTextureCoordIndexint3229cullModeCullingModeCullingModeCullingMode对象各枚举含义见表42alphaModeAlphaModeAlphaModeAlphaMode对象各枚举含义见表43alphaCutofffloat透明度过滤阈值,用于判断材质是否渲染当AlphaModeAM_MASKbaseColorw值wbaseColor渲染为完全透明,否则baseColor其他透明模式下,该阈值不起作用vertexShaderNameString顶点着色器a名称fragmentShaderNameString片元着色器a名称textureStatesArray<TextureUnitState>TextureUnitState对象构TextureUnitState对象各标签含义见表44表47 PBRPass象标含(续)标签名类型描述extensionsString自定义扩展材质的信息a着色器程序以及源代码,依据具体的运行环境而自行配置。表48 Vector4象标含义标签名类型描述xdouble向量的x分量ydouble向量的y分量zdouble向量的z分量wdouble向量的w分量表49 TextureMotionParameter对象标含义标签名类型描述offsetStartUfloat纹理平移运动过程中纹理坐标U方向的起始位置offsetStartVfloat纹理平移运动过程中纹理坐标V方向的起始位置offsetSpeedUfloat纹理平移运动过程中纹理坐标U方向的速度offsetSpeedVfloat纹理平移运动过程中纹理坐标V方向的速度offsetPeriodfloat纹理平移运动周期,单位是秒tilingStartUfloat纹理缩放运动过程中纹理坐标U方向的起始位置tilingStartVfloat纹理缩放运动过程中纹理坐标V方向的起始位置tilingSpeedUfloat纹理缩放运动过程中纹理坐标U方向的速度tilingSpeedVfloat纹理缩放运动过程中纹理坐标V方向的速度tilingPeriodfloat纹理缩放运动周期,单位是秒表50 Vector3象标含义标签名类型描述xdouble向量的x分量ydouble向量的y分量zdouble向量的z分量纹理(Texture)是用于改变物体表面外观纹理贴图信息,包含宽、高、压缩方式及纹理二进制数据等。Texture对象的UML图见图13,对象各属性含义见表51。 图13 Texture象的UML图表51 Texture象属含属性名类型描述strNameString纹理对象的名称mipmapLevelint32纹理对象包含的贴图层数textureDataTextureDataTextureDataTextureData52表52 TextureData象属含义属性名类型描述widthuint32横向像素个数heightuint32纵向像素个数compressTypeTextureCompressTypeTextureCompressTypeTextureCompressType对象各枚举含义见表53dataSizeuint32纹理的二进制流大小pixelFormatPixelFormatPixelFormatPixelFormat表54dataArray<byte>纹理数据二进制流表53 TextureCompressType枚举含义枚举名类型描述TC_NONEint32无压缩格式TC_DXT1_RGB/TC_DXT1_RGBA/TC_DXT3/TC_DXT5int32DXT纹理压缩格式,适用于PC、Web端TC_PVRint32PVR纹理压缩格式,适用于iOS端TC_ETC1/TC_ETC2int32ETC纹理压缩格式,适用于Andriod端TC_WEBPint32WEBP纹理压缩格式TC_CRNint32CRN纹理压缩格式TC_KTX2int32KTX2.0BasisUniversal注:如有需求,支持自行扩展设置纹理压缩格式。表54 PixelFormat枚值义枚举名类型描述PF_RGB8int32RGB格式,3字节像素,R、G、B分别占一个字节PF_RGBA8int32RGBA格式,4字节像素,R、G、B、A分别占一个字节PF_RGB32Fint3296位像素,R、G、B分别占32位像素PF_RGBA32Fint32128位像素,R、G、B、A分别占32位像素注:不限制像素格式,仅列出几个主要的像素格式,如有需求,支持自行扩展设置。IDInfoIDInfoIDTileJSONUML14属性名类型描述countint32Tile中骨架的数量skeletonIDInfosArray<SkeletonIDInfo>Tile中骨架IDSkeletonIDInfo对象构成的数组表示,SkeletonIDInfo对象各属性含义见表56图14 IDInfo象的UML图表55 IDInfo属性名类型描述countint32Tile中骨架的数量skeletonIDInfosArray<SkeletonIDInfo>Tile中骨架IDSkeletonIDInfo对象构成的数组表示,SkeletonIDInfo对象各属性含义见表56表56 SkeletonIDInfo象性含义属性名类型描述nameString骨架的名称monomerCountint32骨架中单体对象的数量monomerIDInfosArray<MonomerIDInfo>骨架中单体对象ID信息集合,用MonomerIDInfo对象构成的数组表示,MonomerIDInfo对象各属性含义见表57表57 MonomerIDInfo对各性含义属性名类型描述iduint32单体对象IDsegmentCountint32单体对象包含的数据块数量segmentIDInfosArray<SegmentIDInfo>数据块ID信息集合,用SegmentIDInfo对象构成的数组表示,SegmentIDInfo对象各属性含义见表58表58 SegmentIDInfo对各性含义属性名类型描述vertexOffsetint32该属性值含义为:非实例化数据中表示顶点偏移量,即顶点坐标在顶点坐标数组中的偏移量,是单体对象在骨架顶点坐标值数组中的起始位置;实例化数据中表示,单体对象在实例化信息集合instanceInfos中的索引位置。instanceInfos见表31vertexCountint32该属性值含义为:非实例化对象中表示顶点数量;实例化对象中存储固定值00101...m-1mm+1...m+n-1m+nm+n+1...m+n+k-1...(x,y,z)(x,y,z)...(x,y,z)(x,y,z)(x,y,z)...(x,y,z)(x,y,z)(x,y,z)...(x,y,z)...vertexOffset:0vertexCount:mvertexOffset:mvertexCount:nvertexOffset:m+nvertexCount:k...vertexData单体对象ID=a的数据块 单体对象ID=b的数据块 单体对象ID=c的数据块图15 非实化据储Segment(vertexOffset)16matrixValues[0]matrixValues[1]...matrixValues[i]matrixValues[0]matrixValues[1]...matrixValues[i]...vertexOffset:0vertexOffset:1...vertexOffset:i...instanceInfos
... i ...segmenIDInfo 单体对象ID=a的数据块
单体对象ID=b的数据块
单体对象ID=c的数据块图16 实例数存示例JSON表59 Extensions象标义标签名类型描述extensionsString数据扩展信息zipgzipLittle-Endian,S3MBFile{floatversion;//数据文件版本号uint32compressedType;//0zipgzip压缩uint32uncompressedSize; //uncompressedpackageuint32compressedSize;//compressedpackage的字节数byte*compressedPackage;//数据压缩包,长度为compressedSize};、ModelElements、IDInfo和ExtensionsoptionsIDInfo注:虚线框表示可选模块。图17 数据件进数包LODPackagesLODPackages及相关对象的二进制流结构应符合如下规定:LODPackages{uint32streamSize; //int32lodPackageCount;//LODPackage对象的个数LODPackagelodPackages[lodPackageCount];bytereserved[n]; //,n0~3};LODPackage{floatrangeValue;//LOD选取阈值因子RangeModerangeMode;//LOD选取模式,存储为uint16BoundingSphereboundingSphere;//BoundingBoxboundingBox;//StringstrChildTile;//挂接的子文件的相对路径int32patchCount;//包含的Patch个数Patchpatches[patchCount];Stringanimations;//动画字符串(JSON格式)};RangeMode{Distance_From_EyePoint=0,//LODPixel_Size_OnScreen=1,//根据投影到屏幕的像素大小选取LODGeometric_Error=2//根据几何误差模式选取LOD};BoundingSphere{doublex;//xdoubley;//ydoublez;//中心点z坐标doubler;//包围球半径};BoundingBox{Point3Dcenter;//包围盒中心点Vector3xExtent;//包围盒x方向和长度Vector3yExtent;//Vector3zExtent;//};Point3D{doublex;//xdoubley;//ydoublez;//z};Vector3{doublex;//向量的x分量doubley;//向量的y分量doublez;//向量的z分量};Patch{Matrix4Dmatrix4d; //int32skeletonCount;StringskeletonNames[skeletonCount];//骨架名};Matrix4D{//4×4矩阵,行主序doublevalues[16];};LODPackage的Patch中仅存储骨架名,对应的元素对象存储在ModelElements中。ModelElementsModelElements及相关对象的二进制流结构应符合如下规定:ModelElements{uint32skeletonsStreamSize;//骨架数据流的二进制长度,以byte为单位int32skeletonCount;//骨架对象的数量Skeletonskeletons[skeletonCount];//uint32texturesStreamSize;//纹理数据流的二进制长度,以byte为单位int32textureCount;//纹理对象的数量Texturetextures[textureCount];//纹理对象集合Stringmaterials;//材质字符串(JSON格式)};Skeleton{uint32skeletonStreamSize;Stringname;bytereserved[n]; //n0~3uint32options; //0VertexDataPackagevertexDataPackages;//int32indexPackageCount;IndexPacakgeindexPackages[indexPackageCount];BoundingBoxboundingBox;};VertexDataPackage{uint32vertexDataPackageStreamSize;uint32vertexCount;//顶点的数量uint16vertexDimension;uint16vertexStride;floatvertexData[vertexCount*vertexDimension];uint32normalCount;//法线的数量uint16normalDimension;uint16normalStride;floatnormalData[normalCount*normalDimension];uint32vertexColorCount;//顶点颜色值的数量uint16vertexColorStride;bytereserved[2];uint32vertexColorData[vertexColorCount];//颜色采用uint32存储,byte[0]~byte[3]分别表示R、G、B、A的值uint16textureCoordCount;//bytereserved[2];TextureCoordtextureCoords[textureCoordCount];uint16in
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026中国医用高分子材料市场供需研究投资评估规计划划分析研究发展报告
- 企业合规管理体系认证制度建设困境与标准化-基于企业合规管理体系认证案例的实证分析
- 2026中国G小基站芯片组集成度提升与OpenRAN市场机会研判
- 2026中国智能穿戴设备行业市场竞争格局分析应用场景发展分析投资评估报告
- 2026中国食品保鲜技术行业创新现状及投资机会评估
- 2026台账管理面试题及答案
- 2026及未来5年中国双八烷基二甲基氯化铵数据监测研究报告
- 2026及未来5年中国卧室空气净化器数据监测研究报告
- 2026及未来5年中国半管式反应釜数据监测研究报告
- 2026事业单位工勤技能-广西-广西图书资料员二级(技师)历年参考题库含答案详解3套试卷
- 2026年公共卫生与卫生政策法规知识测试
- 2026年澜沧现代农业发展集团有限责任公司社会招聘(5人)考试备考题库及答案详解
- DL-T 5220-2021《10kV及以下架空配电线路设计规范》
- 2026年重庆市“五方面人员”选拔乡镇领导班子考试历年参考题库(含完整答案)
- 2026年上海高考英语考试试题(含答案)
- 2026年高考四川卷化学高考真题试题(含答案)
- 2026年全国高考Ⅱ卷语文试卷
- 安全生产事故案例警示课件
- QC/T 1258-2025汽车用蜗杆传动式软管夹箍弹簧内衬补偿型
- GA/T 1999.1-2022道路交通事故车辆速度鉴定方法第1部分:基于汽车行驶记录仪
- 物业公司常见劳动争议处理
评论
0/150
提交评论