Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Parse ¶
type Parse interface { LoadFromFile(filename string) (err error) LoadFromStream(stream *catparser.DataViewEx) (err error) }
Parse 解析接口
type ParsePmd ¶
type ParsePmd struct { Metadata struct { Format string `!:Continue` CoordinateSystem string `!:Continue` //! 模型信息 Magic string `Str:3` Version float32 Name string `StrSjis:20` Comment string `StrSjis:256` EnglishName string `!:Continue` EnglishComment string `!:Continue` //! 解析过程变量 VertexCount uint32 `!:$;!:Continue` FaceCount uint32 `!:$;!:Continue` MaterialCount uint32 `!:$;!:Continue` BoneCount uint16 `!:$;!:Continue` IkCount uint16 `!:$;!:Continue` MorphCount uint16 `!:$;!:Continue` MorphFrameCount uint8 `!:$;!:Continue` BoneFrameNameCount uint8 `!:$;!:Continue` BoneFrameCount uint32 `!:$;!:Continue` EnglishCompatibility bool `!:$;!:Continue` RigidBodyCount uint32 `!:$;!:Continue` ConstraintCount uint32 `!:$;!:Continue` } //! 模型数据 Vertices []PmdVertices `len$:VertexCount` Faces []uint16 `len$:FaceCount` Materials []PmdMaterials `len$:MaterialCount` Bones []PmdBone `len$:BoneCount` Iks []PmdIks `len$:IkCount` Morphs []PmdMorphs `len$:MorphCount` MorphFrames []uint16 `len$:MorphFrameCount` BoneFrameNames []struct { Name string `StrSjis:50` NameEnglish string `!:Continue` } `len$:BoneFrameNameCount` BoneFrames []PmdBoneFrame `len$:BoneFrameCount` ToonTexture [10]struct { FileName string `StrSjis:100` } RigidBodies []PmdRigidBody `len$:RigidBodyCount` Constraints []PmdConstraint `len$:ConstraintCount` // contains filtered or unexported fields }
/ Pmd模型解析
解析MMD模型
? 日志 * 2019年9月21日 完成 / ParsePmd 解析pmd格式模型
func (*ParsePmd) LoadFromFile ¶
LoadFromFile 加载从文件
func (*ParsePmd) LoadFromStream ¶
func (model *ParsePmd) LoadFromStream(dv *catparser.DataViewEx) (err error)
LoadFromStream 从文件对象加载
type ParsePmx ¶
type ParsePmx struct { Metadata struct { Format string `!:Continue` CoordinateSystem string `!:Continue` Magic string `Str:4` Version float32 HeaderSize uint8 `!:$` VertexCount uint32 `!:$;!:Continue` Facecount uint32 `!:$;!:Continue` TextureCount uint32 `!:$;!:Continue` MaterialCount uint32 `!:$;!:Continue` } // 文件设定 Setting struct { Encoding uint8 `!:$` Uv uint8 `!:$` VertexIndexSize uint8 `!:$` TextureIndexSize uint8 `!:$` MaterialIndexSize uint8 `!:$` BoneIndexSize uint8 `!:$` MorphIndexSize uint8 `!:$` RigidbodyIndexSize uint8 `!:$` // contains filtered or unexported fields } `if:"int:HeaderSize>=8";!:Continue` ModelName string `@:ReadString;!:Continue` ModelEnglishName string `@:ReadString;!:Continue` ModelComment string `@:ReadString;!:Continue` ModelEnglishComment string `@:ReadString;!:Continue` Vertices []struct { Position [3]float32 Normal [3]float32 Uv [2]float32 UvA []struct { UV [4]float32 } `len:Uv` SkinningType uint8 `!:$` Skinning struct { BDEF1 struct { BoneIndex int32 `ReadIndex:BoneIndexSize;!:Continue` } `if:"int:SkinningType==0";!:Continue` BDEF2 struct { BoneIndex1 int32 `ReadIndex:BoneIndexSize;!:Continue` BoneIndex2 int32 `ReadIndex:BoneIndexSize;!:Continue` BoneWeight float32 } `if:"int:SkinningType==1";!:Continue` BDEF4 struct { BoneIndex1 int32 `ReadIndex:BoneIndexSize;!:Continue` BoneIndex2 int32 `ReadIndex:BoneIndexSize;!:Continue` BoneIndex3 int32 `ReadIndex:BoneIndexSize;!:Continue` BoneIndex4 int32 `ReadIndex:BoneIndexSize;!:Continue` BoneWeight1 float32 BoneWeight2 float32 BoneWeight3 float32 BoneWeight4 float32 } `if:"int:SkinningType==2";!:Continue` SDEF struct { BoneIndex1 int32 `ReadIndex:BoneIndexSize;!:Continue` BoneIndex2 int32 `ReadIndex:BoneIndexSize;!:Continue` BoneWeight float32 UdefC [3]float32 UdefR0 [3]float32 UdefR1 [3]float32 } `if:"int:SkinningType==3";!:Continue` QDEF struct { BoneIndex1 int32 `ReadIndex:BoneIndexSize;!:Continue` BoneIndex2 int32 `ReadIndex:BoneIndexSize;!:Continue` BoneIndex3 int32 `ReadIndex:BoneIndexSize;!:Continue` BoneIndex4 int32 `ReadIndex:BoneIndexSize;!:Continue` BoneWeight1 float32 BoneWeight2 float32 BoneWeight3 float32 BoneWeight4 float32 } `if:"int:SkinningType==4";!:Continue` EdgeRatio float32 } } `len$:VertexCount` Faces []int16 `len$:Facecount;for:"ReadIndex:VertexIndexSize";!:Continue` Textures []string `len$:TextureCount;for:"@:ReadString";!:Continue` Materials []PmxMaterial `len$:MaterialCount;@:ParseMaterial;!:Continue` }
ParsePmx 解析Pmx格式模型
func (*ParsePmx) LoadFromFile ¶
LoadFromFile 加载从文件
func (*ParsePmx) LoadFromStream ¶
func (model *ParsePmx) LoadFromStream(dv *catparser.DataViewEx) (err error)
LoadFromStream 从文件对象加载
type PmdBone ¶
type PmdBone struct { Name string `StrSjis:20` NameEnglish string `!:Continue` ParentIndex int16 TailIndex int16 Type uint8 IkIndex int16 Position [3]float32 }
PmdBone 骨骼信息
type PmdConstraint ¶
type PmdConstraint struct { Name string `StrSjis:20` RigidBodyIndex1 uint32 RigidBodyIndex2 uint32 Position [3]float32 Rotation [3]float32 TranslationLimitation1 [3]float32 TranslationLimitation2 [3]float32 RotationLimitation1 [3]float32 RotationLimitation2 [3]float32 SpringPosition [3]float32 SpringRotation [3]float32 }
PmdConstraint 限制信息
type PmdIks ¶
type PmdIks struct { Target uint16 Effector uint16 LinkCount uint8 `!:$` Iteration uint16 MaxAngle float32 Links []uint16 `len:LinkCount` }
PmdIks 反向运动学信息
type PmdMaterials ¶
type PmdMaterials struct { Diffuse [4]float32 Shininess float32 Specular [3]float32 Ambient [3]float32 ToonIndex int8 EdgeFlag uint8 FaceCount uint32 FileName string `StrSjis:20` }
PmdMaterials 材质信息
type PmdMorphs ¶
type PmdMorphs struct { Name string `StrSjis:20` NameEnglish string `!:Continue` ElementCount int32 `!:$` Type uint8 Elements []PmdMorphsElements `len:ElementCount` }
PmdMorphs 表面信息
type PmdMorphsElements ¶
PmdMorphsElements 表面信息
type PmdRigidBody ¶
type PmdRigidBody struct { Name string `StrSjis:20` BoneIndex int16 GroupIndex uint8 GroupTarget uint16 ShapeType uint8 Width float32 Height float32 Depth float32 Position [3]float32 Rotation [3]float32 Weight float32 PositionDamping float32 RotationDamping float32 Restitution float32 Friction float32 Type uint8 }
PmdRigidBody 包围盒信息
type PmdVertices ¶
type PmdVertices struct { Position [3]float32 Normal [3]float32 Uv [2]float32 SkinIndices [2]int16 SkinWeights uint8 EdgeFlag uint8 }
PmdVertices 顶点信息
type PmxMaterial ¶
type PmxMaterial struct { Name string //? モデル名 EnglishName string //? モデル英名 Diffuse [4]float32 //? 減衰色 Specular [3]float32 //? 光沢色 Shininess float32 //? 光沢度 Ambient [3]float32 //? 環境色 Flag uint8 //? 描画フラグ EdgeColor [4]float32 //? エッジ色 EdgeSize float32 //? エッジサイズ TextureIndex int32 //? アルベドテクスチャインデックス EnvTextureIndex int32 //? スフィアテクスチャインデックス EnvFlag uint8 //? スフィアテクスチャ演算モード ToonFlag uint8 //? 共有トゥーンフラグ ToonIndex int32 //? トゥーンテクスチャインデックス Comment string //? メモ FaceCount int32 //? 頂点インデックス数 }
PmxMaterial 材质信息
type VertexGrouping ¶
type VertexGrouping struct { ID catgl.PortID //* 索引 EBO uint32 Size int32 DisplayMode uint32 //? 纹理 TextureUnit []catgl.TextureShader //? 物体颜色 VfModelColor mgl32.Vec3 }
VertexGrouping 缓冲索引
func (*VertexGrouping) AddTexture ¶
func (V *VertexGrouping) AddTexture(texture [2]uint32, unit uint32)
AddTexture 添加纹理
type VertexIndex ¶
type VertexIndex struct { catgl.Vertex //? 继承默认顶点处理 Index []uint32 Texture map[string][2]uint32 Grouping map[catgl.PortID]*VertexGrouping //? 灯光信息 VflightPos mgl32.Vec3 VfLightColor mgl32.Vec3 //? 物体颜色 VfModelColor mgl32.Vec3 }
VertexIndex 默认顶点
func (*VertexIndex) SetGrouping ¶
func (V *VertexIndex) SetGrouping(start, size int) *VertexGrouping
SetGrouping 设置块
func (*VertexIndex) SetTexture ¶
func (V *VertexIndex) SetTexture(file string, Target uint32) ([2]uint32, error)
SetTexture 设置材质 * file 材质文件名 * Target 纹理类型
Click to show internal directories.
Click to hide internal directories.