mirror of
https://github.com/zeldaret/tww.git
synced 2026-06-08 12:17:12 -04:00
J3DModelData fakematch, J3DModel progress
This commit is contained in:
+1
-1
@@ -871,7 +871,7 @@ config.libs = [
|
||||
JSystemLib(
|
||||
"J3DGraphAnimator",
|
||||
[
|
||||
Object(NonMatching, "JSystem/J3DGraphAnimator/J3DModelData.cpp"),
|
||||
Object(Matching, "JSystem/J3DGraphAnimator/J3DModelData.cpp"),
|
||||
Object(NonMatching, "JSystem/J3DGraphAnimator/J3DModel.cpp"),
|
||||
Object(NonMatching, "JSystem/J3DGraphAnimator/J3DAnimation.cpp"),
|
||||
Object(NonMatching, "JSystem/J3DGraphAnimator/J3DMaterialAnm.cpp"),
|
||||
|
||||
@@ -99,6 +99,13 @@ public:
|
||||
virtual void calc(u16 v) { J3DMtxCalcAnm::calc(v); }
|
||||
};
|
||||
|
||||
enum J3DJointMtxType {
|
||||
J3DJntMtxType_Normal,
|
||||
J3DJntMtxType_BBoard,
|
||||
J3DJntMtxType_YBBoard,
|
||||
J3DJntMtxType_Multi,
|
||||
};
|
||||
|
||||
class J3DJoint : public J3DNode {
|
||||
public:
|
||||
void initialize();
|
||||
@@ -114,6 +121,8 @@ public:
|
||||
|
||||
J3DMaterial* getMesh() { return mMesh; }
|
||||
u16 getJntNo() const { return mJntNo; }
|
||||
u8 getKind() const { return mKind; }
|
||||
u8 getMtxType() const { return getKind() >> 4; }
|
||||
u8 getScaleCompensate() const { return mScaleCompensate; }
|
||||
void setCurrentMtxCalc(J3DMtxCalc* pMtxCalc) { mCurrentMtxCalc = pMtxCalc; }
|
||||
J3DTransformInfo& getTransformInfo() { return mTransformInfo; }
|
||||
|
||||
@@ -10,6 +10,8 @@ class JUTNameTab;
|
||||
struct J3DModelHierarchy {
|
||||
/* 0x0 */ u16 mType;
|
||||
/* 0x2 */ u16 mValue;
|
||||
|
||||
inline u16 getValue() const { return mValue; }
|
||||
};
|
||||
|
||||
class J3DMaterialTable;
|
||||
|
||||
@@ -35,7 +35,7 @@ public:
|
||||
|
||||
virtual ~J3DMaterialTable();
|
||||
|
||||
J3DMaterial* getMaterialNodePointer(u16 idx) const { return mMaterialNodePointer[idx]; }
|
||||
J3DMaterial* getMaterialNodePointer(const u16 idx) const { return mMaterialNodePointer[idx]; }
|
||||
|
||||
J3DTexture* getTexture() const { return mTexture; }
|
||||
JUTNameTab* getTextureName() const { return mTextureName; }
|
||||
|
||||
@@ -105,14 +105,19 @@ public:
|
||||
u32 getMtxCalcMode() const { return mFlags & 0x03; }
|
||||
u32* getCurrentViewNoPtr() { return &mCurrentViewNo; }
|
||||
u8* getScaleFlagArray() const { return mpScaleFlagArr; }
|
||||
u8 getScaleFlag(u32 idx) const { return mpScaleFlagArr[idx]; }
|
||||
u8 getEnvScaleFlag(u32 idx) const { return mpEvlpScaleFlagArr[idx]; }
|
||||
J3DVertexBuffer* getVertexBuffer() const { return (J3DVertexBuffer*)&mVertexBuffer; }
|
||||
J3DMatPacket* getMatPacket(u16 idx) const { return &mpMatPacket[idx]; }
|
||||
J3DShapePacket* getShapePacket(u16 idx) const { return &mpShapePacket[idx]; }
|
||||
Mtx** getDrawMtxPtrPtr() const { return mpDrawMtxBuf[1]; }
|
||||
Mtx* getDrawMtxPtr() const { return mpDrawMtxBuf[1][mCurrentViewNo]; }
|
||||
Mtx& getDrawMtx(u32 idx) const { return getDrawMtxPtr()[idx]; }
|
||||
Mtx33** getNrmMtxPtrPtr() const { return mpNrmMtxBuf[1]; }
|
||||
Mtx33* getNrmMtxPtr() const { return mpNrmMtxBuf[1][mCurrentViewNo]; }
|
||||
Mtx33*** getBumpMtxPtrPtr() const { return mpBumpMtxArr[1]; }
|
||||
Mtx33& getNrmMtx(u32 idx) const { return getNrmMtxPtr()[idx]; }
|
||||
Mtx33** getBumpMtxPtrPtr(u32 idx) const { return mpBumpMtxArr[1][idx]; }
|
||||
Mtx33* getBumpMtxPtr(u32 idx) const { return mpBumpMtxArr[1][idx][mCurrentViewNo]; }
|
||||
void setBaseScale(const Vec& scale) { mBaseScale = scale; }
|
||||
void setUserArea(u32 area) { mUserArea = area; }
|
||||
u32 getUserArea() const { return mUserArea; }
|
||||
|
||||
@@ -55,6 +55,7 @@ public:
|
||||
JUTNameTab* getTextureName() const { return mMaterialTable.getTextureName(); }
|
||||
void setTexture(J3DTexture* pTexture) { mMaterialTable.setTexture(pTexture); }
|
||||
void setTextureName(JUTNameTab* pTextureName) { mMaterialTable.setTextureName(pTextureName); }
|
||||
u16 getDrawFullWgtMtxNum() const { return mJointTree.getDrawFullWgtMtxNum(); }
|
||||
u16 getWEvlpMtxNum() const { return mJointTree.getWEvlpMtxNum(); }
|
||||
u16* getWEvlpMixMtxIndex() const { return mJointTree.getWEvlpMixIndex(); }
|
||||
f32* getWEvlpMixWeight() const { return mJointTree.getWEvlpMixWeight(); }
|
||||
|
||||
@@ -1,81 +0,0 @@
|
||||
#ifndef J3DMTXBUFFER_H
|
||||
#define J3DMTXBUFFER_H
|
||||
|
||||
#include "JSystem/J3DGraphAnimator/J3DModelData.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
class J3DModelData;
|
||||
|
||||
class J3DMtxBuffer {
|
||||
public:
|
||||
J3DMtxBuffer() { initialize(); }
|
||||
|
||||
void initialize();
|
||||
s32 create(J3DModelData*, u32);
|
||||
s32 createAnmMtx(J3DModelData*);
|
||||
s32 createWeightEnvelopeMtx(J3DModelData*);
|
||||
s32 setNoUseDrawMtx();
|
||||
s32 createDoubleDrawMtx(J3DModelData*, u32);
|
||||
s32 createBumpMtxArray(J3DModelData*, u32);
|
||||
void calcWeightEnvelopeMtx();
|
||||
void calcDrawMtx(u32, Vec const&, f32 const (&)[3][4]);
|
||||
void calcNrmMtx();
|
||||
void calcBBoardMtx();
|
||||
|
||||
MtxP getAnmMtx(int idx) const { return mpAnmMtx[idx]; }
|
||||
void setAnmMtx(int i, Mtx m) { MTXCopy(m, (MtxP)mpAnmMtx[i]); }
|
||||
MtxP getWeightAnmMtx(int idx) const { return mpWeightEvlpMtx[idx]; }
|
||||
|
||||
void setScaleFlag(int idx, u8 flag) { mpScaleFlagArr[idx] = flag; }
|
||||
u32* getCurrentViewNoPtr() { return &mCurrentViewNo; }
|
||||
u8* getScaleFlagArray() const { return mpScaleFlagArr; }
|
||||
u8 getScaleFlag(int idx) const { return mpScaleFlagArr[idx]; }
|
||||
u8 getEnvScaleFlag(int idx) const { return mpEvlpScaleFlagArr[idx]; }
|
||||
Mtx** getDrawMtxPtrPtr() const { return mpDrawMtxArr[1]; }
|
||||
Mtx* getDrawMtxPtr() const { return mpDrawMtxArr[1][mCurrentViewNo]; }
|
||||
Mtx* getDrawMtx(u16 idx) const { return &mpDrawMtxArr[1][mCurrentViewNo][idx]; }
|
||||
Mtx33** getNrmMtxPtrPtr() const { return mpNrmMtxArr[1]; }
|
||||
Mtx33* getNrmMtxPtr() const { return mpNrmMtxArr[1][mCurrentViewNo]; }
|
||||
Mtx33* getNrmMtx(u16 idx) const { return &mpNrmMtxArr[1][mCurrentViewNo][idx]; }
|
||||
Mtx33*** getBumpMtxPtrPtr() const { return mpBumpMtxArr[1]; }
|
||||
Mtx33* getBumpMtxPtr(int idx) const { return mpBumpMtxArr[1][idx][mCurrentViewNo]; }
|
||||
J3DJointTree* getJointTree() const { return mJointTree; }
|
||||
|
||||
void swapDrawMtx() {
|
||||
Mtx* tmp = mpDrawMtxArr[0][mCurrentViewNo];
|
||||
mpDrawMtxArr[0][mCurrentViewNo] = mpDrawMtxArr[1][mCurrentViewNo];
|
||||
mpDrawMtxArr[1][mCurrentViewNo] = tmp;
|
||||
}
|
||||
|
||||
void swapNrmMtx() {
|
||||
Mtx33* tmp = mpNrmMtxArr[0][mCurrentViewNo];
|
||||
mpNrmMtxArr[0][mCurrentViewNo] = mpNrmMtxArr[1][mCurrentViewNo];
|
||||
mpNrmMtxArr[1][mCurrentViewNo] = tmp;
|
||||
}
|
||||
|
||||
static Mtx sNoUseDrawMtx;
|
||||
static Mtx33 sNoUseNrmMtx;
|
||||
static Mtx* sNoUseDrawMtxPtr;
|
||||
static Mtx33* sNoUseNrmMtxPtr;
|
||||
|
||||
private:
|
||||
/* 0x00 */ J3DJointTree* mJointTree;
|
||||
/* 0x04 */ u8* mpScaleFlagArr;
|
||||
/* 0x08 */ u8* mpEvlpScaleFlagArr;
|
||||
/* 0x0C */ Mtx* mpAnmMtx;
|
||||
/* 0x10 */ Mtx* mpWeightEvlpMtx;
|
||||
/* 0x14 */ Mtx** mpDrawMtxArr[2];
|
||||
/* 0x1C */ Mtx33** mpNrmMtxArr[2];
|
||||
/* 0x28 */ Mtx33*** mpBumpMtxArr[2];
|
||||
/* 0x2C */ u32 mFlags;
|
||||
/* 0x30 */ u32 mCurrentViewNo;
|
||||
/* 0x34 */ Mtx* mpUserAnmMtx;
|
||||
|
||||
public:
|
||||
virtual ~J3DMtxBuffer();
|
||||
};
|
||||
|
||||
void J3DCalcViewBaseMtx(f32 (*param_0)[4], Vec const& param_1, f32 const (¶m_2)[3][4],
|
||||
f32 (*param_3)[4]);
|
||||
|
||||
#endif /* J3DMTXBUFFER_H */
|
||||
@@ -2,10 +2,11 @@
|
||||
#define J3DSKINDEFORM_H
|
||||
|
||||
#include "JSystem/J3DGraphAnimator/J3DCluster.h"
|
||||
#include "JSystem/J3DGraphAnimator/J3DMtxBuffer.h"
|
||||
#include "JSystem/J3DGraphBase/J3DTransform.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
class J3DModelData;
|
||||
class J3DVertexBuffer;
|
||||
class J3DModel;
|
||||
class J3DAnmCluster;
|
||||
|
||||
@@ -51,13 +52,13 @@ public:
|
||||
void initSkinInfo(J3DModelData*);
|
||||
int initMtxIndexArray(J3DModelData*);
|
||||
void changeFastSkinDL(J3DModelData*);
|
||||
void calcNrmMtx(J3DMtxBuffer*);
|
||||
// void calcNrmMtx(J3DMtxBuffer*);
|
||||
void transformVtxPosNrm(J3DModelData*);
|
||||
void calcAnmInvJointMtx(J3DMtxBuffer*);
|
||||
void deformFastVtxPos_F32(J3DVertexBuffer*, J3DMtxBuffer*) const;
|
||||
void deformFastVtxNrm_F32(J3DVertexBuffer*, J3DMtxBuffer*) const;
|
||||
void deformVtxPos_F32(J3DVertexBuffer*, J3DMtxBuffer*) const;
|
||||
void deformVtxPos_S16(J3DVertexBuffer*, J3DMtxBuffer*) const;
|
||||
// void calcAnmInvJointMtx(J3DMtxBuffer*);
|
||||
// void deformFastVtxPos_F32(J3DVertexBuffer*, J3DMtxBuffer*) const;
|
||||
// void deformFastVtxNrm_F32(J3DVertexBuffer*, J3DMtxBuffer*) const;
|
||||
// void deformVtxPos_F32(J3DVertexBuffer*, J3DMtxBuffer*) const;
|
||||
// void deformVtxPos_S16(J3DVertexBuffer*, J3DMtxBuffer*) const;
|
||||
void deformVtxNrm_F32(J3DVertexBuffer*) const;
|
||||
void deformVtxNrm_S16(J3DVertexBuffer*) const;
|
||||
void setNrmMtx(int i, MtxP mtx) {
|
||||
|
||||
@@ -170,6 +170,8 @@ public:
|
||||
void setDrawMtx(Mtx** pDrawMtx) { mpDrawMtx = pDrawMtx; }
|
||||
void setNrmMtx(Mtx33** pNrmMtx) { mpNrmMtx = pNrmMtx; }
|
||||
void setBaseMtxPtr(Mtx* pMtx) { mpBaseMtxPtr = pMtx; }
|
||||
void setScaleFlagArray(u8* pScaleFlagArray) { mpScaleFlagArray = pScaleFlagArray; }
|
||||
void setCurrentViewNoPtr(u32* pCurrentViewNo) { mpCurrentViewNo = pCurrentViewNo; }
|
||||
|
||||
J3DShape* getShape() const { return mpShape; }
|
||||
J3DModel* getModel() const { return mpModel; }
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
//
|
||||
|
||||
#include "JSystem/J3DGraphAnimator/J3DModel.h"
|
||||
#include "JSystem/J3DGraphAnimator/J3DJoint.h"
|
||||
#include "JSystem/J3DGraphAnimator/J3DMaterialAnm.h"
|
||||
#include "JSystem/J3DGraphBase/J3DSys.h"
|
||||
#include "JSystem/JKernel/JKRHeap.h"
|
||||
@@ -441,12 +442,12 @@ void J3DModel::calcAnmMtx() {
|
||||
j3dSys.setCurrentMtxCalc(getModelData()->getJointTree().getBasicMtxCalc());
|
||||
j3dSys.setModel(this);
|
||||
|
||||
if (checkFlag(2))
|
||||
if (checkFlag(J3DMdlFlag_Unk00002))
|
||||
j3dSys.getCurrentMtxCalc()->init(j3dDefaultScale, j3dDefaultMtx);
|
||||
else
|
||||
j3dSys.getCurrentMtxCalc()->init(mBaseScale, mBaseTransformMtx);
|
||||
|
||||
j3dSys.getCurrentMtxCalc()->recursiveCalc(getModelData()->getJointTree().getRootNode());
|
||||
getModelData()->getJointTree().getBasicMtxCalc()->recursiveCalc(getModelData()->getJointTree().getRootNode());
|
||||
}
|
||||
|
||||
/* 802EE67C-802EE874 .text calcWeightEnvelopeMtx__8J3DModelFv */
|
||||
@@ -527,13 +528,51 @@ void J3DModel::entry() {
|
||||
}
|
||||
|
||||
/* 802EEB24-802EEBDC .text calcViewBaseMtx__FPA4_fRC3VecRA3_A4_CfPA4_f */
|
||||
void calcViewBaseMtx(float(*)[4], const Vec&, const float(&)[3][4], float(*)[4]) {
|
||||
/* Nonmatching */
|
||||
void calcViewBaseMtx(MtxP viewMtx, const Vec& scale, const Mtx& baseMtx, MtxP dstMtx) {
|
||||
Mtx mtx;
|
||||
mtx[0][0] = baseMtx[0][0] * scale.x;
|
||||
mtx[0][1] = baseMtx[0][1] * scale.y;
|
||||
mtx[0][2] = baseMtx[0][2] * scale.z;
|
||||
mtx[0][3] = baseMtx[0][3];
|
||||
|
||||
mtx[1][0] = baseMtx[1][0] * scale.x;
|
||||
mtx[1][1] = baseMtx[1][1] * scale.y;
|
||||
mtx[1][2] = baseMtx[1][2] * scale.z;
|
||||
mtx[1][3] = baseMtx[1][3];
|
||||
|
||||
mtx[2][0] = baseMtx[2][0] * scale.x;
|
||||
mtx[2][1] = baseMtx[2][1] * scale.y;
|
||||
mtx[2][2] = baseMtx[2][2] * scale.z;
|
||||
mtx[2][3] = baseMtx[2][3];
|
||||
|
||||
MTXConcat(viewMtx, mtx, dstMtx);
|
||||
}
|
||||
|
||||
extern void J3DPSMtxArrayConcat(f32(*)[4], f32(*)[4], f32(*)[4], u32);
|
||||
|
||||
/* 802EEBDC-802EEE30 .text calcDrawMtx__8J3DModelFv */
|
||||
void J3DModel::calcDrawMtx() {
|
||||
/* Nonmatching */
|
||||
switch (mFlags & 0x03) {
|
||||
case 1:
|
||||
for (u32 i = 0; i < getModelData()->getDrawFullWgtMtxNum(); i++)
|
||||
MTXConcat(j3dSys.getViewMtx(), getAnmMtx(getModelData()->getDrawMtxIndex(i)), getDrawMtxPtr()[i]);
|
||||
if (getModelData()->getDrawFullWgtMtxNum() < getModelData()->getDrawMtxNum())
|
||||
J3DPSMtxArrayConcat(j3dSys.getViewMtx(), (MtxP)mpWeightEnvMtx, (MtxP)getDrawMtxPtr(), getModelData()->getWEvlpMtxNum());
|
||||
break;
|
||||
case 0:
|
||||
for (u32 i = 0; i < getModelData()->getDrawFullWgtMtxNum(); i++)
|
||||
MTXCopy(getAnmMtx(getModelData()->getDrawMtxIndex(i)), getDrawMtxPtr()[i]);
|
||||
for (u32 i = 0; i < getModelData()->getWEvlpMtxNum(); i++)
|
||||
MTXCopy(getWeightAnmMtx(i), getDrawMtxPtr()[getModelData()->getDrawFullWgtMtxNum() + i]);
|
||||
break;
|
||||
case 2:
|
||||
calcViewBaseMtx(j3dSys.getViewMtx(), mBaseScale, mBaseTransformMtx, mInternalView);
|
||||
for (u32 i = 0; i < getModelData()->getDrawFullWgtMtxNum(); i++)
|
||||
MTXConcat(mInternalView, getAnmMtx(getModelData()->getDrawMtxIndex(i)), getDrawMtxPtr()[i]);
|
||||
if (getModelData()->getDrawFullWgtMtxNum() < getModelData()->getDrawMtxNum())
|
||||
J3DPSMtxArrayConcat(mInternalView, (MtxP)mpWeightEnvMtx, (MtxP)getDrawMtxPtr(), getModelData()->getWEvlpMtxNum());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* 802EEE30-802EF050 .text viewCalc__8J3DModelFv */
|
||||
@@ -577,17 +616,70 @@ void J3DModel::viewCalc() {
|
||||
|
||||
/* 802EF050-802EF1B8 .text calcNrmMtx__8J3DModelFv */
|
||||
void J3DModel::calcNrmMtx() {
|
||||
/* Nonmatching */
|
||||
if (getModelData()->checkFlag(J3DMdlDataFlag_ConcatView) == 0) {
|
||||
for (u16 i = 0; i < getModelData()->getDrawMtxNum(); i++) {
|
||||
if (getModelData()->getDrawMtxFlag(i) == 0) {
|
||||
if (getScaleFlag(getModelData()->getDrawMtxIndex(i)) == 1)
|
||||
J3DPSMtx33CopyFrom34(getDrawMtx(i), getNrmMtx(i));
|
||||
else
|
||||
J3DPSCalcInverseTranspose(getDrawMtx(i), getNrmMtx(i));
|
||||
} else {
|
||||
if (getEnvScaleFlag(getModelData()->getDrawMtxIndex(i)) == 1)
|
||||
J3DPSMtx33CopyFrom34(getDrawMtx(i), getNrmMtx(i));
|
||||
else
|
||||
J3DPSCalcInverseTranspose(getDrawMtx(i), getNrmMtx(i));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 802EF1B8-802EF2B0 .text calcBumpMtx__8J3DModelFv */
|
||||
void J3DModel::calcBumpMtx() {
|
||||
/* Nonmatching */
|
||||
if (getModelData()->checkBumpFlag() == 1) {
|
||||
s32 bumpMtxOffset = 0;
|
||||
for (s32 i = 0; i < getModelData()->getMaterialNum(); i++) {
|
||||
J3DMaterial * pMaterial = getModelData()->getMaterialNodePointer(i);
|
||||
if (pMaterial->getNBTScale()->mbHasScale == 1) {
|
||||
pMaterial->getShape()->calcNBTScale(*pMaterial->getNBTScale()->getScale(), getNrmMtxPtr(), getBumpMtxPtr(bumpMtxOffset));
|
||||
DCStoreRange(getBumpMtxPtr(bumpMtxOffset), getModelData()->getDrawMtxNum() * sizeof(Mtx33));
|
||||
bumpMtxOffset++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 802EF2B0-802EF414 .text calcBBoard__8J3DModelFv */
|
||||
void J3DModel::calcBBoard() {
|
||||
/* Nonmatching */
|
||||
if (getModelData()->checkBBoardFlag()) {
|
||||
for (u16 i = 0; i < getModelData()->getDrawMtxNum(); i++) {
|
||||
if (getModelData()->getDrawMtxFlag(i) != 0)
|
||||
continue;
|
||||
|
||||
u8 mtxType = getModelData()->getJointNodePointer(getModelData()->getDrawMtxIndex(i))->getMtxType();
|
||||
if (mtxType == J3DJntMtxType_BBoard) {
|
||||
Mtx& drawMtx = getDrawMtx(i);
|
||||
J3DCalcBBoardMtx(drawMtx);
|
||||
Mtx33& nrmMtx = getNrmMtx(i);
|
||||
|
||||
nrmMtx[0][0] = 1.0f / drawMtx[0][0];
|
||||
nrmMtx[0][1] = 0.0f;
|
||||
nrmMtx[0][2] = 0.0f;
|
||||
|
||||
nrmMtx[1][0] = 0.0f;
|
||||
nrmMtx[1][1] = 1.0f / drawMtx[1][1];
|
||||
nrmMtx[1][2] = 0.0f;
|
||||
|
||||
nrmMtx[2][0] = 0.0f;
|
||||
nrmMtx[2][1] = 0.0f;
|
||||
nrmMtx[2][2] = 1.0f / drawMtx[2][2];
|
||||
} else if (mtxType == J3DJntMtxType_YBBoard) {
|
||||
Mtx& drawMtx = getDrawMtx(i);
|
||||
J3DCalcYBBoardMtx(drawMtx);
|
||||
Mtx33& nrmMtx = getNrmMtx(i);
|
||||
J3DPSCalcInverseTranspose(drawMtx, nrmMtx);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 802EF414-802EF5D8 .text prepareShapePackets__8J3DModelFv */
|
||||
@@ -624,11 +716,9 @@ void J3DModel::prepareShapePackets() {
|
||||
if (getModelData()->checkBumpFlag() == 1) {
|
||||
for (s32 i = 0; i < getModelData()->getMaterialNum(); i++) {
|
||||
J3DMaterial* pMaterial = getModelData()->getMaterialNodePointer(i);
|
||||
if (pMaterial->getTexGenBlock()->getNBTScale()->mbHasScale) {
|
||||
if (pMaterial->getTexGenBlock()->getNBTScale()->mbHasScale == 1) {
|
||||
J3DShape *pShape = pMaterial->getShape();
|
||||
J3DShapePacket *pPacket = getShapePacket(pShape->getIndex());
|
||||
u32 bumpMtxOffset = pShape->getBumpMtxOffset();
|
||||
pPacket->setNrmMtx(getBumpMtxPtrPtr()[bumpMtxOffset]);
|
||||
getShapePacket(pShape->getIndex())->setNrmMtx(getBumpMtxPtrPtr(pShape->getBumpMtxOffset()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -63,8 +63,10 @@ void J3DJointTree::makeHierarchy(J3DNode* pRootNode, const J3DModelHierarchy** p
|
||||
}
|
||||
break;
|
||||
case kTypeMaterial:
|
||||
*pHierarchy = inf + 1;
|
||||
pNewMaterial = pMaterialTable->mMaterialNodePointer[inf->mValue];
|
||||
{
|
||||
*pHierarchy = inf + 1;
|
||||
pNewMaterial = pMaterialTable->getMaterialNodePointer(inf->getValue());
|
||||
}
|
||||
break;
|
||||
case kTypeShape:
|
||||
*pHierarchy = inf + 1;
|
||||
@@ -81,7 +83,7 @@ void J3DJointTree::makeHierarchy(J3DNode* pRootNode, const J3DModelHierarchy** p
|
||||
} else if (pNewMaterial != NULL && pRootNode->getType() == 'NJNT') {
|
||||
((J3DJoint*)pRootNode)->addMesh(pNewMaterial);
|
||||
pNewMaterial->mJoint = ((J3DJoint*)pRootNode);
|
||||
} else if (pNewShape != NULL && pNewNode->getType() == 'NJNT') {
|
||||
} else if (pNewShape != NULL && pRootNode->getType() == 'NJNT') {
|
||||
pNewMaterial = ((J3DJoint*)pRootNode)->getMesh();
|
||||
pNewMaterial->mShape = pNewShape;
|
||||
pNewShape->mMaterial = pNewMaterial;
|
||||
|
||||
@@ -6,10 +6,11 @@
|
||||
#include "JSystem/J3DGraphBase/J3DShapeMtx.h"
|
||||
#include "JSystem/J3DGraphBase/J3DGD.h"
|
||||
#include "JSystem/J3DGraphBase/J3DPacket.h"
|
||||
#include "JSystem/J3DGraphAnimator/J3DModel.h"
|
||||
#include "JSystem/J3DGraphBase/J3DShapeDraw.h"
|
||||
#include "JSystem/J3DGraphBase/J3DSys.h"
|
||||
#include "JSystem/J3DGraphBase/J3DTransform.h"
|
||||
#include "JSystem/J3DGraphAnimator/J3DModel.h"
|
||||
#include "JSystem/J3DGraphAnimator/J3DModelData.h"
|
||||
|
||||
extern void J3DFifoLoadNrmMtxImm(Mtx, u32);
|
||||
extern void J3DFifoLoadNrmMtxImm3x3(Mtx33, u32);
|
||||
|
||||
Reference in New Issue
Block a user