mirror of
https://github.com/bloeys/assimp-go.git
synced 2025-12-29 08:28:20 +00:00
88 lines
2.3 KiB
Go
Executable File
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
|
|
}
|