Files
assimp-go/asig/mesh.go
2021-11-18 21:02:14 +04:00

88 lines
2.3 KiB
Go
Executable File

package asig
import "github.com/bloeys/gglm/gglm"
const (
MaxColorSets = 8
MaxTexCoords = 8
)
type Mesh struct {
//Bitwise combination of PrimitiveType enum
PrimitiveTypes PrimitiveType
Vertices []gglm.Vec3
Normals []gglm.Vec3
Tangents []gglm.Vec3
BitTangents []gglm.Vec3
//ColorSets vertex color sets where each set is either empty or has length=len(Vertices), with max number of sets=MaxColorSets
ColorSets [MaxColorSets][]gglm.Vec4
//TexCoords (aka UV channels) where each TexCoords[i] has NumUVComponents[i] channels, and is either empty or has length=len(Vertices), with max number of TexCoords per vertex = MaxTexCoords
TexCoords [MaxTexCoords][]gglm.Vec3
TexCoordChannelCount [MaxTexCoords]uint
Faces []Face
Bones []*Bone
AnimMeshes []*AnimMesh
AABB AABB
MorphMethod MorphMethod
MaterialIndex uint
Name string
}
type Face struct {
Indices []uint
}
type AnimMesh struct {
Name string
/** Replacement for Mes.Vertices. If this array is non-NULL,
* it *must* contain mNumVertices entries. The corresponding
* array in the host mesh must be non-NULL as well - animation
* meshes may neither add or nor remove vertex components (if
* a replacement array is NULL and the corresponding source
* array is not, the source data is taken instead)*/
Vertices []gglm.Vec3
Normals []gglm.Vec3
Tangents []gglm.Vec3
BitTangents []gglm.Vec3
Colors [MaxColorSets][]gglm.Vec4
TexCoords [MaxTexCoords][]gglm.Vec3
Weight float32
}
type AABB struct {
Min gglm.Vec3
Max gglm.Vec3
}
type Bone struct {
Name string
//The influence weights of this bone
Weights []VertexWeight
/** Matrix that transforms from bone space to mesh space in bind pose.
*
* This matrix describes the position of the mesh
* in the local space of this bone when the skeleton was bound.
* Thus it can be used directly to determine a desired vertex position,
* given the world-space transform of the bone when animated,
* and the position of the vertex in mesh space.
*
* It is sometimes called an inverse-bind matrix,
* or inverse bind pose matrix.
*/
OffsetMatrix gglm.Mat4
}
type VertexWeight struct {
VertIndex uint
//The strength of the influence in the range (0...1). The total influence from all bones at one vertex is 1
Weight float32
}