Documentation ¶
Index ¶
- Constants
- Variables
- func GetStandardBoneConfigs() map[StandardBoneNames]*BoneConfig
- func NewCollisionGroup(collisionGroupMask uint16) []uint16
- type Bdef1
- type Bdef2
- type Bdef4
- type Bone
- func (bone *Bone) CanManipulate() bool
- func (bone *Bone) CanRotate() bool
- func (bone *Bone) CanTranslate() bool
- func (v *Bone) Copy() mcore.IIndexNameModel
- func (bone *Bone) HasFixedAxis() bool
- func (bone *Bone) HasLocalAxis() bool
- func (bone *Bone) IsAfterPhysicsDeform() bool
- func (bone *Bone) IsAnkle() bool
- func (bone *Bone) IsArm() bool
- func (bone *Bone) IsEffectorLocal() bool
- func (bone *Bone) IsEffectorParentDeform() bool
- func (bone *Bone) IsEffectorRotation() bool
- func (bone *Bone) IsEffectorTranslation() bool
- func (bone *Bone) IsFinger() bool
- func (bone *Bone) IsHead() bool
- func (bone *Bone) IsIK() bool
- func (bone *Bone) IsLegD() bool
- func (bone *Bone) IsLegFK() bool
- func (bone *Bone) IsLower() bool
- func (bone *Bone) IsNoLocalCancel() bool
- func (bone *Bone) IsShoulderP() bool
- func (bone *Bone) IsTailBone() bool
- func (bone *Bone) IsTwist() bool
- func (bone *Bone) IsUpper() bool
- func (bone *Bone) IsVisible() bool
- func (bone *Bone) NormalizeFixedAxis(fixedAxis *mmath.MVec3)
- func (bone *Bone) NormalizeLocalAxis(localAxisX *mmath.MVec3)
- type BoneCategory
- type BoneConfig
- type BoneFlag
- type BoneMorphOffset
- type Bones
- type CollisionGroup
- type Deform
- func (d *Deform) GetAllIndexes() []int
- func (d *Deform) GetAllWeights() []float64
- func (d *Deform) GetIndexes(weightThreshold float64) []int
- func (d *Deform) GetSdefParams() (mgl32.Vec3, mgl32.Vec3, mgl32.Vec3)
- func (d *Deform) GetWeights(weightThreshold float64) []float64
- func (d *Deform) Normalize(align bool)
- func (d *Deform) NormalizedDeform() [8]float32
- type DeformType
- type DisplaySlot
- type DisplaySlots
- type DisplayType
- type DrawFlag
- func (d DrawFlag) IsDoubleSidedDrawing() bool
- func (d DrawFlag) IsDrawingEdge() bool
- func (d DrawFlag) IsDrawingOnSelfShadowMaps() bool
- func (d DrawFlag) IsDrawingSelfShadows() bool
- func (d DrawFlag) IsGroundShadow() bool
- func (d DrawFlag) SetDoubleSidedDrawing(flag bool) DrawFlag
- func (d DrawFlag) SetDrawingEdge(flag bool) DrawFlag
- func (d DrawFlag) SetDrawingOnSelfShadowMaps(flag bool) DrawFlag
- func (d DrawFlag) SetDrawingSelfShadows(flag bool) DrawFlag
- func (d DrawFlag) SetGroundShadow(flag bool) DrawFlag
- type Face
- type FaceGL
- type Faces
- type GroupMorphOffset
- type IDeform
- type Ik
- type IkLink
- type Joint
- type JointParam
- type Joints
- type LayerIndex
- type LayerIndexes
- type Material
- type MaterialMorphCalcMode
- type MaterialMorphOffset
- type Materials
- type Meshes
- type Morph
- type MorphPanel
- type MorphType
- type Morphs
- type PhysicsType
- type PmxModel
- type PmxReader
- type Reference
- type RigidBodies
- type RigidBody
- type RigidBodyParam
- type Sdef
- type Shape
- type SpecialFlag
- type SphereMode
- type StandardBoneNames
- type TMorphOffset
- type Texture
- type TextureType
- type Textures
- type ToonSharing
- type ToonTextures
- type UvMorphOffset
- type Vertex
- type VertexMorphOffset
- type Vertices
Constants ¶
const MLIB_PREFIX string = "[mlib]"
MLIB_PREFIX システム用接頭辞
Variables ¶
var CollisionGroupFlags = []uint16{
0x0001,
0x0002,
0x0004,
0x0008,
0x0010,
0x0020,
0x0040,
0x0080,
0x0100,
0x0200,
0x0400,
0x0800,
0x1000,
0x2000,
0x4000,
0x8000,
}
Functions ¶
func GetStandardBoneConfigs ¶
func GetStandardBoneConfigs() map[StandardBoneNames]*BoneConfig
func NewCollisionGroup ¶
Types ¶
type Bdef1 ¶
type Bdef1 struct {
Deform
}
Bdef1 represents the BDEF1 deformation.
func (*Bdef1) NormalizedDeform ¶
NormalizedDeform 4つのボーンINDEXとウェイトを返す(合計8個)
type Bdef2 ¶
type Bdef2 struct {
Deform
}
Bdef2 represents the BDEF2 deformation.
func (*Bdef2) NormalizedDeform ¶
NormalizedDeform 4つのボーンINDEXとウェイトを返す(合計8個)
type Bdef4 ¶
type Bdef4 struct {
Deform
}
Bdef4 represents the BDEF4 deformation.
func NewBdef4 ¶
func NewBdef4(index0, index1, index2, index3 int, weight0, weight1, weight2, weight3 float64) *Bdef4
NewBdef4 creates a new Bdef4 instance.
func (*Bdef4) NormalizedDeform ¶
NormalizedDeform 4つのボーンINDEXとウェイトを返す(合計8個)
type Bone ¶
type Bone struct { *mcore.IndexNameModel Position *mmath.MVec3 // ボーン位置 ParentIndex int // 親ボーンのボーンIndex Layer int // 変形階層 BoneFlag BoneFlag // ボーンフラグ(16bit) 各bit 0:OFF 1:ON TailPosition *mmath.MVec3 // 接続先:0 の場合 座標オフセット, ボーン位置からの相対分 TailIndex int // 接続先:1 の場合 接続先ボーンのボーンIndex EffectIndex int // 回転付与:1 または 移動付与:1 の場合 付与親ボーンのボーンIndex EffectFactor float64 // 付与率 FixedAxis *mmath.MVec3 // 軸固定:1 の場合 軸の方向ベクトル LocalAxisX *mmath.MVec3 // ローカル軸:1 の場合 X軸の方向ベクトル LocalAxisZ *mmath.MVec3 // ローカル軸:1 の場合 Z軸の方向ベクトル EffectorKey int // 外部親変形:1 の場合 Key値 Ik *Ik // IK:1 の場合 IKデータを格納 DisplaySlot int // 該当表示枠 IsSystem bool // システム計算用追加ボーン の場合 true NormalizedLocalAxisX *mmath.MVec3 // 計算済みのX軸の方向ベクトル NormalizedLocalAxisY *mmath.MVec3 // 計算済みのY軸の方向ベクトル NormalizedLocalAxisZ *mmath.MVec3 // 計算済みのZ軸の方向ベクトル NormalizedFixedAxis *mmath.MVec3 // 計算済みの軸制限ベクトル LocalAxis *mmath.MVec3 // ローカル軸の方向ベクトル(CorrectedLocalXVectorの正規化ベクトル) ParentRelativePosition *mmath.MVec3 // 親ボーンからの相対位置 ChildRelativePosition *mmath.MVec3 // Tailボーンへの相対位置 LocalMatrix *mmath.MMat4 // ローカル軸行列 RevertOffsetMatrix *mmath.MMat4 // 逆オフセット行列(親ボーンからの相対位置分を戻す) OffsetMatrix *mmath.MMat4 // オフセット行列 (自身の位置を原点に戻す行列) TreeBoneIndexes []int // 自分のボーンまでのボーンIndexのリスト ParentBoneIndexes []int // 自分の親ボーンからルートまでのボーンIndexのリスト ParentBoneNames []string // 自分の親ボーンからルートまでのボーン名のリスト RelativeBoneIndexes []int // 関連ボーンINDEX一覧(付与親とかIKとか) ChildBoneIndexes []int // 自分を親として登録しているボーンINDEX一覧 EffectiveBoneIndexes []int // 自分を付与親として登録しているボーンINDEX一覧 IkLinkBoneIndexes []int // IKリンクとして登録されているIKボーンのボーンIndex IkTargetBoneIndexes []int // IKターゲットとして登録されているIKボーンのボーンIndex AngleLimit bool // 自分がIKリンクボーンの角度制限がある場合、true MinAngleLimit *mmath.MRotation // 自分がIKリンクボーンの角度制限の下限 MaxAngleLimit *mmath.MRotation // 自分がIKリンクボーンの角度制限の上限 LocalAngleLimit bool // 自分がIKリンクボーンのローカル軸角度制限がある場合、true LocalMinAngleLimit *mmath.MRotation // 自分がIKリンクボーンのローカル軸角度制限の下限 LocalMaxAngleLimit *mmath.MRotation // 自分がIKリンクボーンのローカル軸角度制限の上限 AxisSign int // ボーンの軸ベクトル(左は-1, 右は1) RigidBody *RigidBody // 物理演算用剛体 }
func NewBoneByName ¶
func (*Bone) Copy ¶
func (v *Bone) Copy() mcore.IIndexNameModel
func (*Bone) IsNoLocalCancel ¶
ローカル軸行列計算で親のキャンセルをさせないボーンであるか
func (*Bone) NormalizeFixedAxis ¶
func (*Bone) NormalizeLocalAxis ¶
type BoneCategory ¶
type BoneCategory int
const ( // ルート CATEGORY_ROOT BoneCategory = iota // 上半身 CATEGORY_UPPER BoneCategory = iota // 下半身 CATEGORY_LOWER BoneCategory = iota // 腕 CATEGORY_ARM BoneCategory = iota // 足 CATEGORY_LEG BoneCategory = iota // 指 CATEGORY_FINGER BoneCategory = iota // 足D CATEGORY_LEG_D BoneCategory = iota // 肩P CATEGORY_SHOULDER_P BoneCategory = iota // 足FK CATEGORY_LEG_FK BoneCategory = iota // 足首 CATEGORY_ANKLE BoneCategory = iota // 捩 CATEGORY_TWIST BoneCategory = iota // 頭 CATEGORY_HEAD BoneCategory = iota // ローカル軸行列計算で親のキャンセルをさせないボーン CATEGORY_NO_LOCAL_CANCEL BoneCategory = iota )
type BoneConfig ¶
type BoneConfig struct { // 準標準ボーン名 Name StandardBoneNames // 親ボーン名候補リスト ParentBoneNames []StandardBoneNames // 表示先位置(該当ボーンの位置との相対位置) TailPosition *mmath.MVec3 // 末端ボーン名候補リスト TailBoneNames []StandardBoneNames // ボーンの特性 BoneFlag BoneFlag // ボーンカテゴリ Categories []BoneCategory }
func NewBoneConfig ¶
func NewBoneConfig( name StandardBoneNames, parentBoneNames []StandardBoneNames, tailPosition *mmath.MVec3, tailBoneNames []StandardBoneNames, flag BoneFlag, categories []BoneCategory, ) *BoneConfig
type BoneFlag ¶
type BoneFlag uint16
const ( // 初期値 BONE_FLAG_NONE BoneFlag = 0x0000 // 接続先(PMD子ボーン指定)表示方法 -> 0:座標オフセットで指定 1:ボーンで指定 BONE_FLAG_TAIL_IS_BONE BoneFlag = 0x0001 // 回転可能 BONE_FLAG_CAN_ROTATE BoneFlag = 0x0002 // 移動可能 BONE_FLAG_CAN_TRANSLATE BoneFlag = 0x0004 // 表示 BONE_FLAG_IS_VISIBLE BoneFlag = 0x0008 // 操作可 BONE_FLAG_CAN_MANIPULATE BoneFlag = 0x0010 // IK BONE_FLAG_IS_IK BoneFlag = 0x0020 // ローカル付与 | 付与対象 0:ユーザー変形値/IKリンク/多重付与 1:親のローカル変形量 BONE_FLAG_IS_EXTERNAL_LOCAL BoneFlag = 0x0080 // 回転付与 BONE_FLAG_IS_EXTERNAL_ROTATION BoneFlag = 0x0100 // 移動付与 BONE_FLAG_IS_EXTERNAL_TRANSLATION BoneFlag = 0x0200 // 軸固定 BONE_FLAG_HAS_FIXED_AXIS BoneFlag = 0x0400 // ローカル軸 BONE_FLAG_HAS_LOCAL_AXIS BoneFlag = 0x0800 // 物理後変形 BONE_FLAG_IS_AFTER_PHYSICS_DEFORM BoneFlag = 0x1000 // 外部親変形 BONE_FLAG_IS_EXTERNAL_PARENT_DEFORM BoneFlag = 0x2000 )
type BoneMorphOffset ¶
type BoneMorphOffset struct { BoneIndex int // ボーンIndex Position *mmath.MVec3 // グローバル移動量(x,y,z) Rotation *mmath.MRotation // グローバル回転量-クォータニオン(x,y,z,w) Scale *mmath.MVec3 // グローバル縮尺量(x,y,z) ※システム独自 LocalPosition *mmath.MVec3 // ローカル軸に沿った移動量(x,y,z) ※システム独自 LocalRotation *mmath.MRotation // ローカル軸に沿った回転量-クォータニオン(x,y,z,w) ※システム独自 LocalScale *mmath.MVec3 // ローカル軸に沿った縮尺量(x,y,z) ※システム独自 }
BoneMorphOffset represents a bone morph.
func NewBoneMorphOffset ¶
func (*BoneMorphOffset) GetType ¶
func (v *BoneMorphOffset) GetType() int
type Bones ¶
type Bones struct { *mcore.IndexNameModels[*Bone] IkTreeIndexes map[int][]int LayerSortedBones map[bool][]*Bone LayerSortedNames map[bool]map[string]int DeformBoneIndexes map[int][]int }
ボーンリスト
func (*Bones) GetLayerIndexes ¶
type CollisionGroup ¶
type CollisionGroup struct {
IsCollisions []uint16
}
func NewCollisionGroupFromSlice ¶
func NewCollisionGroupFromSlice(collisionGroup []uint16) CollisionGroup
type Deform ¶
type Deform struct { Indexes []int // ボーンINDEXリスト Weights []float64 // ウェイトリスト Count int // デフォームボーン個数 }
Deform デフォーム既定構造体
func (*Deform) GetAllIndexes ¶
func (*Deform) GetAllWeights ¶
func (*Deform) GetIndexes ¶
GetIndexes ウェイト閾値以上のウェイトを持っているINDEXのみを取得する
func (*Deform) GetSdefParams ¶
SDEF用パラメーターを返す
func (*Deform) GetWeights ¶
GetWeights ウェイト閾値以上のウェイトを持っているウェイトのみを取得する
func (*Deform) NormalizedDeform ¶
NormalizedDeform 4つのボーンINDEXとウェイトを返す(合計8個)
type DeformType ¶
type DeformType byte
DeformType ウェイト変形方式
const ( BDEF1 DeformType = 0 BDEF2 DeformType = 1 BDEF4 DeformType = 2 SDEF DeformType = 3 )
type DisplaySlot ¶
type DisplaySlot struct { *mcore.IndexNameModel SpecialFlag SpecialFlag // 特殊枠フラグ - 0:通常枠 1:特殊枠 References []Reference // 表示枠要素 IsSystem bool // ツール側で追加した表示枠 }
type DisplaySlots ¶
type DisplaySlots struct { *mcore.IndexModels[*DisplaySlot] }
表示枠リスト
func NewDisplaySlots ¶
func NewDisplaySlots(count int) *DisplaySlots
type DisplayType ¶
type DisplayType int
表示枠要素タイプ
const ( DISPLAY_TYPE_BONE DisplayType = 0 // ボーン DISPLAY_TYPE_MORPH DisplayType = 1 // モーフ )
type DrawFlag ¶
type DrawFlag byte
const ( // 初期値 DRAW_FLAG_NONE DrawFlag = 0x0000 // 0x01:両面描画 DRAW_FLAG_DOUBLE_SIDED_DRAWING DrawFlag = 0x0001 // 0x02:地面影 DRAW_FLAG_GROUND_SHADOW DrawFlag = 0x0002 // 0x04:セルフシャドウマップへの描画 DRAW_FLAG_DRAWING_ON_SELF_SHADOW_MAPS DrawFlag = 0x0004 // 0x08:セルフシャドウの描画 DRAW_FLAG_DRAWING_SELF_SHADOWS DrawFlag = 0x0008 // 0x10:エッジ描画 DRAW_FLAG_DRAWING_EDGE DrawFlag = 0x0010 )
func (DrawFlag) IsDrawingOnSelfShadowMaps ¶
0x04:セルフシャドウマップへの描画
func (DrawFlag) IsDrawingSelfShadows ¶
0x08:セルフシャドウの描画
func (DrawFlag) SetDoubleSidedDrawing ¶
func (DrawFlag) SetDrawingEdge ¶
func (DrawFlag) SetDrawingOnSelfShadowMaps ¶
func (DrawFlag) SetDrawingSelfShadows ¶
func (DrawFlag) SetGroundShadow ¶
type Face ¶
type Face struct { *mcore.IndexModel VertexIndexes [3]int // 頂点INDEXリスト }
面データ
func (*Face) Copy ¶
func (f *Face) Copy() mcore.IIndexModel
type GroupMorphOffset ¶
GroupMorphOffset represents a group morph.
func NewGroupMorphOffset ¶
func NewGroupMorphOffset(morphIndex int, morphFactor float64) *GroupMorphOffset
func (*GroupMorphOffset) GetType ¶
func (v *GroupMorphOffset) GetType() int
type Ik ¶
type IkLink ¶
type Joint ¶
type Joint struct { *mcore.IndexNameModel JointType byte // Joint種類 - 0:スプリング6DOF | PMX2.0では 0 のみ(拡張用) RigidbodyIndexA int // 関連剛体AのIndex RigidbodyIndexB int // 関連剛体BのIndex Position *mmath.MVec3 // 位置(x,y,z) Rotation *mmath.MRotation // 回転 JointParam *JointParam // ジョイントパラメーター IsSystem bool }
func NewJointByName ¶
func (*Joint) Copy ¶
func (j *Joint) Copy() mcore.IIndexNameModel
type JointParam ¶
type JointParam struct { TranslationLimitMin *mmath.MVec3 // 移動制限-下限(x,y,z) TranslationLimitMax *mmath.MVec3 // 移動制限-上限(x,y,z) RotationLimitMin *mmath.MRotation // 回転制限-下限 RotationLimitMax *mmath.MRotation // 回転制限-上限 SpringConstantTranslation *mmath.MVec3 // バネ定数-移動(x,y,z) SpringConstantRotation *mmath.MRotation // バネ定数-回転(x,y,z) }
func NewJointParam ¶
func NewJointParam() *JointParam
type LayerIndexes ¶
type LayerIndexes []LayerIndex
func (LayerIndexes) Contains ¶
func (p LayerIndexes) Contains(index int) bool
func (LayerIndexes) Len ¶
func (p LayerIndexes) Len() int
func (LayerIndexes) Less ¶
func (p LayerIndexes) Less(i, j int) bool
func (LayerIndexes) Swap ¶
func (p LayerIndexes) Swap(i, j int)
type Material ¶
type Material struct { *mcore.IndexNameModel Diffuse *mmath.MVec4 // Diffuse (R,G,B,A)(拡散色+非透過度) Specular *mmath.MVec4 // Specular (R,G,B,A)(反射色 + 反射強度) Ambient *mmath.MVec3 // Ambient (R,G,B)(環境色) DrawFlag DrawFlag // 描画フラグ(8bit) - 各bit 0:OFF 1:ON Edge *mmath.MVec4 // エッジ色 (R,G,B,A) EdgeSize float64 // エッジサイズ TextureIndex int // 通常テクスチャINDEX SphereTextureIndex int // スフィアテクスチャINDEX SphereMode SphereMode // スフィアモード ToonSharingFlag ToonSharing // 共有Toonフラグ ToonTextureIndex int // ToonテクスチャINDEX Memo string // メモ VerticesCount int // 材質に対応する面(頂点)数 (必ず3の倍数になる) TextureFactor *mmath.MVec4 // テクスチャ係数 SphereTextureFactor *mmath.MVec4 // スフィアテクスチャ係数 ToonTextureFactor *mmath.MVec4 // トゥーンテクスチャ係数 }
func NewMaterial ¶
func NewMaterial() *Material
func NewMaterialByName ¶
func (*Material) Copy ¶
func (m *Material) Copy() mcore.IIndexNameModel
type MaterialMorphCalcMode ¶
type MaterialMorphCalcMode int
MaterialMorphCalcMode 材質モーフ:計算モード
const ( CALC_MODE_MULTIPLICATION MaterialMorphCalcMode = 0 // 乗算 CALC_MODE_ADDITION MaterialMorphCalcMode = 1 // 加算 )
type MaterialMorphOffset ¶
type MaterialMorphOffset struct { MaterialIndex int // 材質Index -> -1:全材質対象 CalcMode MaterialMorphCalcMode // 0:乗算, 1:加算 Diffuse *mmath.MVec4 // Diffuse (R,G,B,A) Specular *mmath.MVec4 // SpecularColor (R,G,B, 係数) Ambient *mmath.MVec3 // AmbientColor (R,G,B) Edge *mmath.MVec4 // エッジ色 (R,G,B,A) EdgeSize float64 // エッジサイズ TextureFactor *mmath.MVec4 // テクスチャ係数 (R,G,B,A) SphereTextureFactor *mmath.MVec4 // スフィアテクスチャ係数 (R,G,B,A) ToonTextureFactor *mmath.MVec4 // Toonテクスチャ係数 (R,G,B,A) }
MaterialMorphOffset represents a material morph.
func NewMaterialMorphOffset ¶
func NewMaterialMorphOffset( materialIndex int, calcMode MaterialMorphCalcMode, diffuse *mmath.MVec4, specular *mmath.MVec4, ambient *mmath.MVec3, edge *mmath.MVec4, edgeSize float64, textureFactor *mmath.MVec4, sphereTextureFactor *mmath.MVec4, toonTextureFactor *mmath.MVec4, ) *MaterialMorphOffset
func (*MaterialMorphOffset) GetType ¶
func (v *MaterialMorphOffset) GetType() int
type Materials ¶
type Materials struct { *mcore.IndexNameModels[*Material] Vertices map[int][]int Faces map[int][]int }
材質リスト
func NewMaterials ¶
type Morph ¶
type Morph struct { *mcore.IndexNameModel Panel MorphPanel // モーフパネル MorphType MorphType // モーフ種類 Offsets []TMorphOffset // モーフオフセット DisplaySlot int // 表示枠 IsSystem bool // ツール側で追加したモーフ }
Morph represents a morph.
func (*Morph) Copy ¶
func (m *Morph) Copy() mcore.IIndexNameModel
type MorphPanel ¶
type MorphPanel byte
MorphPanel 操作パネル
const ( MORPH_PANEL_SYSTEM MorphPanel = 0 // システム予約 MORPH_PANEL_EYEBROW_LOWER_LEFT MorphPanel = 1 // 眉(左下) MORPH_PANEL_EYE_UPPER_LEFT MorphPanel = 2 // 目(左上) MORPH_PANEL_LIP_UPPER_RIGHT MorphPanel = 3 // 口(右上) MORPH_PANEL_OTHER_LOWER_RIGHT MorphPanel = 4 // その他(右下) )
func (MorphPanel) PanelName ¶
func (p MorphPanel) PanelName() string
PanelName returns the name of the operation panel.
type MorphType ¶
type MorphType int
MorphType モーフ種類
const ( MORPH_TYPE_GROUP MorphType = 0 // グループ MORPH_TYPE_VERTEX MorphType = 1 // 頂点 MORPH_TYPE_BONE MorphType = 2 // ボーン MORPH_TYPE_UV MorphType = 3 // UV MORPH_TYPE_EXTENDED_UV1 MorphType = 4 // 追加UV1 MORPH_TYPE_EXTENDED_UV2 MorphType = 5 // 追加UV2 MORPH_TYPE_EXTENDED_UV3 MorphType = 6 // 追加UV3 MORPH_TYPE_EXTENDED_UV4 MorphType = 7 // 追加UV4 MORPH_TYPE_MATERIAL MorphType = 8 // 材質 MORPH_TYPE_AFTER_VERTEX MorphType = 9 // ボーン変形後頂点(システム独自) )
type PhysicsType ¶
type PhysicsType int
剛体物理の計算モード
const ( PHYSICS_TYPE_STATIC PhysicsType = 0 // ボーン追従(static) PHYSICS_TYPE_DYNAMIC PhysicsType = 1 // 物理演算(dynamic) PHYSICS_TYPE_DYNAMIC_BONE PhysicsType = 2 // 物理演算 + Bone位置合わせ )
type PmxModel ¶
type PmxModel struct { *mcore.HashModel Signature string Version float64 ExtendedUVCount int VertexCountType int TextureCountType int MaterialCountType int BoneCountType int MorphCountType int RigidBodyCountType int Name string EnglishName string Comment string EnglishComment string JsonData map[string]interface{} Vertices *Vertices Faces *Faces Textures *Textures ToonTextures *ToonTextures Materials *Materials Bones *Bones Morphs *Morphs DisplaySlots *DisplaySlots RigidBodies *RigidBodies Joints *Joints Meshes *Meshes DrawInitialized bool Index int // モデルインデックス(複数人モデル対応) // contains filtered or unexported fields }
func NewPmxModel ¶
func (*PmxModel) Copy ¶
func (m *PmxModel) Copy() mcore.IHashModel
func (*PmxModel) InitializeDisplaySlots ¶
func (pm *PmxModel) InitializeDisplaySlots()
type PmxReader ¶
type PmxReader struct { mcore.BaseReader[*PmxModel] }
func (*PmxReader) ReadByFilepath ¶
func (r *PmxReader) ReadByFilepath(path string) (mcore.IHashModel, error)
指定されたパスのファイルからデータを読み込む
type Reference ¶
type Reference struct { DisplayType DisplayType // 要素対象 0:ボーン 1:モーフ DisplayIndex int // ボーンIndex or モーフIndex }
func NewDisplaySlotReference ¶
func NewDisplaySlotReference() *Reference
type RigidBodies ¶
type RigidBodies struct { *mcore.IndexNameModels[*RigidBody] }
剛体リスト
func NewRigidBodies ¶
func NewRigidBodies(count int) *RigidBodies
type RigidBody ¶
type RigidBody struct { *mcore.IndexNameModel BoneIndex int // 関連ボーンIndex CollisionGroup byte // グループ CollisionGroupMask CollisionGroup // 非衝突グループフラグ CollisionGroupMaskValue int // 非衝突グループフラグ値 ShapeType Shape // 形状 Size *mmath.MVec3 // サイズ(x,y,z) Position *mmath.MVec3 // 位置(x,y,z) Rotation *mmath.MRotation // 回転(x,y,z) -> ラジアン角 RigidBodyParam *RigidBodyParam // 剛体パラ PhysicsType PhysicsType // 剛体の物理演算 // CorrectPhysicsType PhysicsType // 剛体の物理演算(補正後) XDirection *mmath.MVec3 // X軸方向 YDirection *mmath.MVec3 // Y軸方向 ZDirection *mmath.MVec3 // Z軸方向 IsSystem bool // システムで追加した剛体か Matrix *mmath.MMat4 // 剛体の行列 Bone *Bone // 繋がっているボーン JointedBone *Bone // ジョイントで繋がってるボーン }
func (*RigidBody) Copy ¶
func (r *RigidBody) Copy() mcore.IIndexNameModel
type RigidBodyParam ¶
type RigidBodyParam struct { Mass float64 // 質量 LinearDamping float64 // 移動減衰 AngularDamping float64 // 回転減衰 Restitution float64 // 反発力 Friction float64 // 摩擦力 }
func NewRigidBodyParam ¶
func NewRigidBodyParam() *RigidBodyParam
type Sdef ¶
Sdef represents the SDEF deformation.
func (*Sdef) NormalizedDeform ¶
NormalizedDeform 4つのボーンINDEXとウェイトを返す(合計8個)
type SpecialFlag ¶
type SpecialFlag int
特殊枠フラグ - 0:通常枠 1:特殊枠
const ( SPECIAL_FLAG_OFF SpecialFlag = 0 // 通常枠 SPECIAL_FLAG_ON SpecialFlag = 1 // 特殊枠(Rootと表情) )
type SphereMode ¶
type SphereMode byte
スフィアモード
const ( // 無効 SPHERE_MODE_INVALID SphereMode = 0 // 乗算(sph) SPHERE_MODE_MULTIPLICATION SphereMode = 1 // 加算(spa) SPHERE_MODE_ADDITION SphereMode = 2 // サブテクスチャ(追加UV1のx,yをUV参照して通常テクスチャ描画を行う) SPHERE_MODE_SUBTEXTURE SphereMode = 3 )
type StandardBoneNames ¶
type StandardBoneNames string
const ( ROOT StandardBoneNames = "全ての親" CENTER StandardBoneNames = "センター" GROOVE StandardBoneNames = "グルーブ" WAIST StandardBoneNames = "腰" LOWER StandardBoneNames = "下半身" LEG_CENTER StandardBoneNames = "足中心" UPPER StandardBoneNames = "上半身" UPPER2 StandardBoneNames = "上半身2" UPPER3 StandardBoneNames = "上半身3" NECK_ROOT StandardBoneNames = "首根元" NECK StandardBoneNames = "首" HEAD StandardBoneNames = "頭" EYES StandardBoneNames = "両目" EYE StandardBoneNames = "{d}目" BUST StandardBoneNames = "{d}胸" SHOULDER_ROOT StandardBoneNames = "{d}肩根元" SHOULDER_P StandardBoneNames = "{d}肩P" SHOULDER StandardBoneNames = "{d}肩" SHOULDER_C StandardBoneNames = "{d}肩C" ARM StandardBoneNames = "{d}腕" ARM_TWIST StandardBoneNames = "{d}腕捩" ELBOW StandardBoneNames = "{d}ひじ" WRIST_TWIST StandardBoneNames = "{d}手捩" WRIST StandardBoneNames = "{d}手首" THUMB0 StandardBoneNames = "{d}親指0" THUMB1 StandardBoneNames = "{d}親指1" THUMB2 StandardBoneNames = "{d}親指2" THUMB_TAIL StandardBoneNames = "{d}親指先" INDEX1 StandardBoneNames = "{d}人指1" INDEX2 StandardBoneNames = "{d}人指2" INDEX3 StandardBoneNames = "{d}人指3" INDEX_TAIL StandardBoneNames = "{d}人指先" MIDDLE1 StandardBoneNames = "{d}中指1" MIDDLE2 StandardBoneNames = "{d}中指2" MIDDLE3 StandardBoneNames = "{d}中指3" MIDDLE_TAIL StandardBoneNames = "{d}中指先" RING1 StandardBoneNames = "{d}薬指1" RING2 StandardBoneNames = "{d}薬指2" RING3 StandardBoneNames = "{d}薬指3" RING_TAIL StandardBoneNames = "{d}薬指先" PINKY1 StandardBoneNames = "{d}小指1" PINKY2 StandardBoneNames = "{d}小指2" PINKY3 StandardBoneNames = "{d}小指3" PINKY_TAIL StandardBoneNames = "{d}小指先" WAIST_CANCEL StandardBoneNames = "腰キャンセル{d}" LEG StandardBoneNames = "{d}足" KNEE StandardBoneNames = "{d}ひざ" ANKLE StandardBoneNames = "{d}足首" TOE StandardBoneNames = "{d}つま先" LEG_D StandardBoneNames = "{d}足D" KNEE_D StandardBoneNames = "{d}ひざD" ANKLE_D StandardBoneNames = "{d}足首D" TOE_EX StandardBoneNames = "{d}足先EX" LEG_IK_PARENT StandardBoneNames = "{d}足IK親" LEG_IK StandardBoneNames = "{d}足IK" TOE_IK StandardBoneNames = "{d}つま先IK" HEEL StandardBoneNames = "{d}かかと" )
func (StandardBoneNames) Left ¶
func (s StandardBoneNames) Left() string
func (StandardBoneNames) Right ¶
func (s StandardBoneNames) Right() string
func (StandardBoneNames) String ¶
func (s StandardBoneNames) String() string
func (StandardBoneNames) StringFromDirection ¶
func (s StandardBoneNames) StringFromDirection(direction string) string
type TMorphOffset ¶
type TMorphOffset interface {
GetType() int
}
TMorphOffset represents a morph offset.
type Texture ¶
type Texture struct { *mcore.IndexModel Name string // テクスチャ名 TextureType TextureType // テクスチャ種別 Path string // テクスチャフルパス Valid bool // テクスチャフルパスが有効であるか否か Initialized bool // 描画初期化済みフラグ Image *image.NRGBA // テクスチャイメージ IsGeneratedMipmap bool // ミップマップが生成されているか否か // contains filtered or unexported fields }
func NewTexture ¶
func NewTexture() *Texture
func (*Texture) Copy ¶
func (t *Texture) Copy() mcore.IIndexModel
type TextureType ¶
type TextureType int
テクスチャ種別
const ( TEXTURE_TYPE_TEXTURE TextureType = 0 // テクスチャ TEXTURE_TYPE_TOON TextureType = 1 // Toonテクスチャ TEXTURE_TYPE_SPHERE TextureType = 2 // スフィアテクスチャ )
type ToonSharing ¶
type ToonSharing byte
共有Toonフラグ
const ( // 0:継続値は個別Toon TOON_SHARING_INDIVIDUAL ToonSharing = 0 // 1:継続値は共有Toon TOON_SHARING_SHARING ToonSharing = 1 )
type ToonTextures ¶
type ToonTextures struct { *mcore.IndexModels[*Texture] }
共有テクスチャ辞書
func NewToonTextures ¶
func NewToonTextures() *ToonTextures
type UvMorphOffset ¶
UvMorphOffset represents a UV morph.
func NewUvMorphOffset ¶
func NewUvMorphOffset(vertexIndex int, uv *mmath.MVec4) *UvMorphOffset
func (*UvMorphOffset) GetType ¶
func (v *UvMorphOffset) GetType() int
type Vertex ¶
type Vertex struct { *mcore.IndexModel Position *mmath.MVec3 // 頂点位置 Normal *mmath.MVec3 // 頂点法線 Uv *mmath.MVec2 // UV ExtendedUvs []*mmath.MVec4 // 追加UV DeformType DeformType // ウェイト変形方式 Deform IDeform // デフォーム EdgeFactor float64 // エッジ倍率 MaterialIndexes []int // 割り当て材質インデックス }
func (*Vertex) Copy ¶
func (v *Vertex) Copy() mcore.IIndexModel
type VertexMorphOffset ¶
type VertexMorphOffset struct { VertexIndex int // 頂点INDEX Position *mmath.MVec3 // 座標オフセット量(x,y,z) }
VertexMorphOffset represents a vertex morph.
func NewVertexMorphOffset ¶
func NewVertexMorphOffset(vertexIndex int, position *mmath.MVec3) *VertexMorphOffset
func (*VertexMorphOffset) GetType ¶
func (v *VertexMorphOffset) GetType() int