亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? max2nmocs312.cpp

?? 3dmax導出3d模型二次開發插件
?? CPP
字號:
//************************************************************************** 
//* Max2NmoCS312.cpp	- Virtools File Exporter
//*
//* Romain Sididris - Copyright (c) Virtools 2001
//*
//* - This file contains some the same code than MAx2Nmo301.cpp
//* but use the 3.12 version of character studio header files
//*
//***************************************************************************
#include "Precomp.h"
#include "Max2Nmo.h"

#ifndef MAX42

#include "PhyExpCS312.h"

int AddBoneToArray(XVoidArray* bones,void* bone);

// Try to find if a skin modifier is in the modifier stack of a node
Modifier* Max2Nmo::FindSkinModifierCS312 (INode* node)
{
	// Get object from node. Abort if no object.
	Object* pObj = node->GetObjectRef();
	if (!pObj) return NULL;

	// Is derived object ?
	SClass_ID sid = pObj->SuperClassID();
	while (pObj->SuperClassID() == GEN_DERIVOB_CLASS_ID)
	{
		// Yes -> Cast.
		IDerivedObject* pDerObj = static_cast<IDerivedObject*>(pObj);

		// Iterate over all entries of the modifier stack.
		int ModStackIndex = 0;
		while (ModStackIndex < pDerObj->NumModifiers()) {
			// Get current modifier.
			Modifier* mod = pDerObj->GetModifier(ModStackIndex);
			// Is this Skin ?
			if (mod->ClassID() == SKIN_CLASSID ) {
				return mod;
			}
			// Next modifier stack entry.
			ModStackIndex++;
		}
		pObj = pDerObj->GetObjRef();
	}
	return NULL;
}

// Try to find if a physique modifier is in the modifier stack of a node
Modifier* Max2Nmo::FindPhysiqueModifierCS312 (INode* node)
{
	// Get object from node. Abort if no object.
	Object* pObj = node->GetObjectRef();
	if (!pObj) return NULL;

	// Is derived object ?
	SClass_ID sid = pObj->SuperClassID();
	while (pObj->SuperClassID() == GEN_DERIVOB_CLASS_ID) {
		// Yes -> Cast.
		IDerivedObject* pDerObj = static_cast<IDerivedObject*>(pObj);

		// Iterate over all entries of the modifier stack.
		int ModStackIndex = 0;
		while (ModStackIndex < pDerObj->NumModifiers())
		{
			// Get current modifier.
			Modifier* mod = pDerObj->GetModifier(ModStackIndex);

			// Is this Physique ?
			if (mod->ClassID() == Class_ID(PHYSIQUE_CLASS_ID_A, PHYSIQUE_CLASS_ID_B) )	{
				return mod;
			}
			// Next modifier stack entry.
			ModStackIndex++;
		}
		pObj = pDerObj->GetObjRef();
	}
	// Not found.
	return NULL;
}

/********************************************************************

********************************************************************/
BOOL Max2Nmo::ExportPhysiqueMeshCS312(INode* node,CK3dEntity* ent)
{
	Modifier *PhysiqueModifier = FindPhysiqueModifier(node);
	if (!PhysiqueModifier) return FALSE;
	
	IPhysiqueExport *phyInterface = (IPhysiqueExport *)( PhysiqueModifier->GetInterface(I_PHYINTERFACE) );
	if (!phyInterface) return FALSE;

	IPhyContextExport* context=phyInterface->GetContextInterface(node);
	if (!context) return FALSE;
	
	VirtoolsTransitionMesh* tmp_mesh= VirtoolsExporter->GetTransitionMesh(node);
	context->AllowBlending(TRUE);
	context->ConvertToRigid(TRUE);

	CKMesh* mesh=ent->GetCurrentMesh();
	if (!mesh) return FALSE;


	Report(REPORT_HLEVEL,"%s : Converting Physique modifier to Skinning\r\n",node->GetName());

	Matrix3 InitTM;
	VxMatrix Mat;
	CKSkin* skin		= ent->CreateSkin();
	int NbPhyVertices	= context->GetNumberVertices();
	int VertexCount		= mesh->GetModifierVertexCount();
	
	XVoidArray bones;

	CKDWORD Stride=0;
	BYTE* pts=mesh->GetModifierVertices(&Stride);
	CKDWORD NStride=0;
	BYTE* norms=(BYTE*)mesh->GetNormalsPtr(&NStride);
	

	BOOL DoNormal = (mesh->GetClassID() != CKCID_PATCHMESH);
	skin->SetVertexCount(VertexCount);
	if (DoNormal) {
		skin->SetNormalCount(VertexCount);
	}
	

	//----- Convert vertices info to skin data			
	for(int j = 0 ; j < VertexCount ; j++,pts+=Stride,norms+=NStride)  {
		int MaxVertexIndex = tmp_mesh ? tmp_mesh->m_VirtoolsVertices[j].OriginalPosIndex : j;

		IPhyVertexExport* vert=context->GetVertexInterface(MaxVertexIndex);

		CKSkinVertexData* vertexdata = skin->GetVertexData(j);
		if (vert)
		if (vert->GetVertexType()==RIGID_NON_BLENDED_TYPE) {
			IPhyRigidVertex* rvert=(IPhyRigidVertex*)vert;
		
			vertexdata->SetBoneCount(1);
			vertexdata->SetBone(0,AddBoneToArray(&bones,rvert->GetNode()));
			vertexdata->SetWeight(0,1.0f);
			vertexdata->SetInitialPos(*(VxVector *)pts);
			if (DoNormal) {
				skin->SetNormal(j,*(VxVector *)norms);
			}
		} else
		if (vert->GetVertexType()==RIGID_BLENDED_TYPE)	{
			// RIGID_BLENDED_TYPE
			IPhyBlendedRigidVertex* bvert=(IPhyBlendedRigidVertex*)vert;
			int nbbones = bvert->GetNumberNodes();

			vertexdata->SetBoneCount(nbbones);
			vertexdata->SetInitialPos(*(VxVector *)pts);
			if (DoNormal) {
				skin->SetNormal(j,*(VxVector *)norms);
			}

			float sum = 0;
			for (int k=0;k<nbbones;++k)	{
				sum += bvert->GetWeight(k);
			}
			sum = 1.0f/sum;

			for (k=0;k<nbbones;++k)	{
				vertexdata->SetBone(k,AddBoneToArray(&bones,bvert->GetNode(k)));
				vertexdata->SetWeight(k,sum * bvert->GetWeight(k));
			}
		} else {
			Report(REPORT_HLEVEL,"%s : Invalid skin vertex type (Not Rigid)\r\n",node->GetName());
		}
		context->ReleaseVertexInterface(vert);
	}

	//----- Create Bones
	int NbBones=bones.Size();
	skin->SetBoneCount(NbBones);
	for(j = 0 ; j < NbBones; j++) {
		INode* bone=(INode *)bones[j];
		CK3dEntity* ent = VirtoolsExporter->GetEntityByKey(bone);
		
		CKSkinBoneData* bonedata = skin->GetBoneData(j);

		bonedata->SetBone(ent);
		
		if (ent) {
			bonedata->SetBoneInitialInverseMatrix(ent->GetInverseWorldMatrix());
		}
	}
	
	InitTM=node->GetNodeTM(0);
	ConvertMaxMatrix2Virtools(InitTM, Mat);
	skin->SetObjectInitMatrix(Mat);
				
	phyInterface->ReleaseContextInterface(context);
	PhysiqueModifier->ReleaseInterface(I_PHYINTERFACE,phyInterface);
	return TRUE;
}	

#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品电影在线观看| aa级大片欧美| 国产不卡视频在线播放| www.激情成人| 91麻豆精品91久久久久同性| 欧美精品一区二区三区很污很色的| 欧美日韩精品一区二区天天拍小说 | 欧美激情在线一区二区| 国产欧美日韩不卡| 亚洲国产va精品久久久不卡综合| 日本伊人色综合网| 91首页免费视频| 欧美高清视频在线高清观看mv色露露十八 | 成人网男人的天堂| 欧美精品一二三| 中文字幕免费一区| 免费人成网站在线观看欧美高清| 不卡av电影在线播放| 日韩一区二区在线免费观看| 久久久久成人黄色影片| 五月综合激情网| 91麻豆国产自产在线观看| 日韩欧美中文一区二区| 亚洲一级二级三级| 狠狠色伊人亚洲综合成人| 91福利在线看| 一色屋精品亚洲香蕉网站| 蜜臀av性久久久久蜜臀av麻豆| 成人激情小说网站| 久久综合九色综合97婷婷女人 | 亚洲精品免费视频| 国产成人一级电影| 日韩午夜电影在线观看| 亚洲一区二区免费视频| 国产精品77777竹菊影视小说| 欧美一区二区在线免费观看| 一区二区三区精品视频在线| 成人免费高清在线| 国产无遮挡一区二区三区毛片日本| 亚洲午夜久久久久久久久久久| 成人免费视频网站在线观看| 久久久久99精品一区| 久久91精品久久久久久秒播| 9191精品国产综合久久久久久| 亚洲激情自拍偷拍| 日本精品免费观看高清观看| 国产精品福利av| 成人av在线播放网站| 日本一区二区动态图| 成人综合在线视频| 国产精品视频麻豆| 不卡在线视频中文字幕| 国产精品毛片久久久久久久| 成人午夜精品在线| 日韩一区在线播放| 日本久久精品电影| 亚洲网友自拍偷拍| 91精品国产综合久久香蕉的特点| 日日夜夜精品免费视频| 日韩亚洲欧美在线| 国产在线播放一区| 国产女人aaa级久久久级| 成人av网站在线| 欧美激情一区三区| 91色porny在线视频| 亚洲欧美成人一区二区三区| 欧美怡红院视频| 亚洲一区在线视频观看| 欧美久久久一区| 极品尤物av久久免费看| 国产欧美视频在线观看| 色综合视频在线观看| 午夜视频在线观看一区二区| 91精品国产一区二区三区| 久久66热re国产| 综合色天天鬼久久鬼色| 欧美日韩国产a| 国产自产高清不卡| 亚洲男人的天堂一区二区| 欧美日韩极品在线观看一区| 三级影片在线观看欧美日韩一区二区| 日韩欧美中文字幕精品| 成人av免费在线播放| 亚洲成人动漫精品| 日本一区二区三区高清不卡 | 欧美吻胸吃奶大尺度电影| 美女在线观看视频一区二区| 久久久影院官网| 色女孩综合影院| 欧美色综合网站| 国产成人啪免费观看软件| 日韩有码一区二区三区| 亚洲一区免费观看| 亚洲精品免费看| 综合自拍亚洲综合图不卡区| 日本一区二区成人| 国产无人区一区二区三区| 日韩欧美在线影院| 91精品国产欧美一区二区成人| 色婷婷亚洲婷婷| 99精品国产一区二区三区不卡| 久久不见久久见免费视频7| 天天免费综合色| 亚洲va欧美va人人爽午夜| 亚洲精品伦理在线| 日韩伦理免费电影| 亚洲精品久久久蜜桃| 中文字幕中文字幕在线一区 | 国产亚洲成年网址在线观看| 日韩欧美的一区| 精品国精品国产| 欧美电影免费观看高清完整版在 | 日韩电影在线一区| 日韩精品久久久久久| 午夜精品久久久久久久久久久| 亚洲电影在线播放| 亚洲激情自拍偷拍| 亚洲午夜久久久久| 热久久国产精品| 国产在线精品一区二区夜色| 国内精品自线一区二区三区视频| 国模无码大尺度一区二区三区| 国产制服丝袜一区| 波波电影院一区二区三区| 91色porny在线视频| 欧美日韩一区二区三区四区| 欧美老人xxxx18| 精品久久久久久久人人人人传媒 | 欧美在线观看视频一区二区三区| 在线观看亚洲一区| 欧美日本在线观看| 欧美tickling网站挠脚心| 久久只精品国产| 亚洲人成在线观看一区二区| 亚洲一区二区欧美激情| 麻豆久久一区二区| 成+人+亚洲+综合天堂| 欧美特级限制片免费在线观看| 欧美日韩国产一级片| 亚洲精品在线免费播放| 中文字幕在线不卡| 日韩有码一区二区三区| 国产高清精品网站| 在线亚洲欧美专区二区| 欧美电影免费观看高清完整版 | 蜜桃av噜噜一区二区三区小说| 国产精品一区专区| 色哦色哦哦色天天综合| 日韩欧美国产三级电影视频| 国产精品视频观看| 免费视频一区二区| bt7086福利一区国产| 51久久夜色精品国产麻豆| 日本一区二区高清| 日韩专区一卡二卡| eeuss鲁片一区二区三区 | 青青草一区二区三区| 国产成人99久久亚洲综合精品| 色悠悠久久综合| 久久久久久久久97黄色工厂| 一个色在线综合| 成人综合在线网站| 欧美大片一区二区| 一区二区在线观看免费 | 国产欧美日韩另类一区| 日本视频在线一区| 色网综合在线观看| 国产欧美一区二区精品性色超碰 | 亚洲成人久久影院| 成人av在线网站| 日韩欧美一级二级| 亚洲成人一区二区在线观看| 成人午夜又粗又硬又大| 欧美变态凌虐bdsm| 午夜久久久影院| 在线观看一区二区视频| 综合久久久久久| 国产99久久久久久免费看农村| 在线成人av影院| 亚洲午夜一区二区三区| 91亚洲午夜精品久久久久久| 国产午夜精品久久久久久免费视| 青椒成人免费视频| 欧美群妇大交群中文字幕| 亚洲欧美日韩国产一区二区三区| 国产在线精品免费| 欧美精品一区视频| 麻豆精品一二三| 91精品国产乱码久久蜜臀| 亚洲一二三四区不卡| 色婷婷激情综合| 樱花草国产18久久久久| 91黄色在线观看| 亚洲资源在线观看| 欧美伊人久久大香线蕉综合69| 亚洲品质自拍视频网站| 91女神在线视频| 亚洲最大的成人av| 欧美偷拍一区二区| 亚洲妇女屁股眼交7|