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

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

?? max2nmo.h

?? 3dmax導出3d模型二次開發插件
?? H
字號:
//************************************************************************** 
//* Max2Nmo.h  - Virtools File Exporter
//*
//* Romain Sididris - Copyright (c) Virtools 2000 
//*
//* (Based on Ascii File Exporter source code
//*  By Christer Janson
//*  Kinetix Development
//*  Copyright (c) Kinetix 1997, All Rights Reserved. )
//*
//* Class Definition
//*
//***************************************************************************


//#define _USESCRIPTS_

extern ClassDesc* GetAsciiExpDesc();
extern ClassDesc* GetVirtoolsToolDesc();
extern TCHAR *GetString(int id);
extern HINSTANCE hInstance;

#define VERSION			150					// Version number * 100
#define CFGFILENAME		_T("Max2NmoV.CFG")	// Configuration file

struct TextureUVGen {
	BOOL TileU,TileV;
	BOOL MirrorU,MirrorV;
	BOOL Cropping;
	float UOffset,VOffset;
	float UScale,VScale;
	float AngleMap;
	float UCropOffset,VCropOffset;
	float UCropScale,VCropScale;
	TextureUVGen() {
		TileU = TileV = MirrorU = MirrorV = Cropping = FALSE;
		UOffset = VOffset = AngleMap = UCropOffset =VCropOffset = 0.0f;
		UScale = VScale = UCropScale = VCropScale				= 0.0f;
	}
};

struct NodeMeshMtl {
	void*	mesh;
	Mtl*	mtl;
	CKMesh* CKMesh;
}; 

class MtlKeeper {
public:
	BOOL	AddMtl(Mtl* mtl);
	int		GetMtlID(Mtl* mtl);
	int		Count();
	Mtl*	GetMtl(int id);

	Tab<Mtl*> mtlTab;
};

// This is the main class for the exporter.

class Max2Nmo : public SceneExport {
public:
	Max2Nmo();
	~Max2Nmo();

// SceneExport methods
	int    ExtCount();					// Number of extensions supported 
	const TCHAR * Ext(int n);			// Extension #n (i.e. "Nmo")
	const TCHAR * LongDesc();			// Long ASCII description (i.e. "Virtools Export") 
	const TCHAR * ShortDesc();			// Short ASCII description (i.e. "Virtools")
	const TCHAR * AuthorName();			// ASCII Author name
	const TCHAR * CopyrightMessage();   // ASCII Copyright message 
	const TCHAR * OtherMessage1();		// Other message #1
	const TCHAR * OtherMessage2();		// Other message #2
	unsigned int Version();				// Version number * 100 (i.e. v3.01 = 301) 
	void	ShowAbout(HWND hWnd);		// Show DLL's "About..." box
	int		DoExport(const TCHAR *name,ExpInterface *ei,Interface *i, BOOL suppressPrompts=FALSE, DWORD options=0); // Export	file
	BOOL	SupportsOptions(int ext, DWORD options);

//-------------------------------------------------------------
// Other methods

	// Register All Special Parameters
	BOOL RegisterAllSpecialParameters();

	// Really Export
	int ReallyDoExport(const TCHAR *name, Interface *inf, BOOL sel );
#ifdef _USESCRIPTS_
	// Evaluate User Defined Properties
	BOOL	evaluateNodeUserDefinedProperties( INode* node );
#endif
	// Node enumeration
	BOOL	nodeEnum(INode* node);
	void	PreProcess(INode* node, int& nodeCount);
	void	PostProcess(INode* node);

// High level export
	void	ExportMaterialList();
	void	ExportGeomObject(INode* node); 
	void	ExportLightObject(INode* node); 
	void	ExportCameraObject(INode* node); 
	void	ExportShapeObject(INode* node); 
	void	ExportHelperObject(INode* node);

// Mid level export
	void	ExportMesh(INode* node,CK3dEntity* ent); 
	void	ExportPatchMesh(INode* node,CK3dEntity* ent); 
	void	ExportAnimKeys(INode* node,CK3dEntity* ent);
	void	ExportAnimMesh(INode* node); 
	BOOL	ExportSkinnedMesh(INode* node,CK3dEntity* ent); 
	BOOL	ExportPhysiqueMesh(INode* node,CK3dEntity* ent); 
#ifndef MAX42
	BOOL	ExportPhysiqueMeshCS312(INode* node,CK3dEntity* ent); 
#endif
	BOOL	ExportPhysiqueMeshCS300(INode* node,CK3dEntity* ent); 
	void	ExportIKJoints(INode* node);
	void	ExportNodeBase(INode* node,CK3dEntity* entity);

// Low level export
	void	DumpMaterial(Mtl* mtl);
	void	DumpUVGen(StdUVGen* uvGen); 
// Animation
	void	DumpSampledAnim(INode* node,CKObjectAnimation* anim);		// In case of sampling
	void	DumpPosKeys(Control* cont,CKObjectAnimation* anim);	// In case of supported PositionController
	void	DumpRotKeys(Control* cont,CKObjectAnimation* anim);	// In case of supported RotationController
	void	DumpScaleKeys(Control* cont,CKObjectAnimation* anim); // In case of supported ScaleController
	void	DumpMeshMorphKey(CKMorphController* ctrl,INode* node,TimeValue t);
	void	DumpPatchMeshMorphKey(CKMorphController* ctrl,INode* node,TimeValue t);

// Misc utility methods
	Point3	GetVertexNormal(Mesh* mesh, int faceNo, RVertex* rv);
	void	make_face_uv(Face *f, VxUV *tv);
	BOOL	TMNegParity(Matrix3 &m);
	BOOL	CheckForAnimation(INode* node, BOOL& pos, BOOL& rot, BOOL& scale,BOOL& scaleAxis);
	BOOL	IsKnownController(Control* cont);
	void    ConvertMaxMatrix2Virtools(Matrix3 &m, VxMatrix& WM);
	void    ConvertMaxLightMatrix2Virtools(Matrix3 &m, VxMatrix& WM);
	Modifier*		FindSkinModifier (INode* node);
#ifndef MAX42
	Modifier*		FindSkinModifierCS312 (INode* node);
#endif
	Modifier*		FindSkinModifierCS300 (INode* node);
	Modifier*		FindPhysiqueModifier (INode* node);
#ifndef MAX42
	Modifier*		FindPhysiqueModifierCS312 (INode* node);
#endif
	Modifier*		FindPhysiqueModifierCS300 (INode* node);


	TriObject*		GetTriObjectFromNode(INode *node, TimeValue t, int &deleteIt);
	PatchObject*	GetPatchObjectFromNode(INode *node,TimeValue t,int &deleteIt);
	SplineShape*	GetSplineShapeFromNode(INode *node,TimeValue t,int &deleteIt);
	Matrix3			GetNodeOffsetTM(INode* node);
	Mtl*			GetMaterialByIndex(Mtl *pMtl,DWORD MatId,int MapChannel, void*& returnedKey );
	BOOL			GetTextureUvGen(Mtl* pMtl,TextureUVGen& uvgen);
	void			ApplyUvGen(VxUV& uv,TextureUVGen& uvgen,BOOL useUVGen);

// Configuration file IO methods
	TSTR	GetCfgFilename();
	BOOL	ReadConfig();
	void	WriteConfig();
	
// Interface to member variables
	inline BOOL	GetShowProgressionBar()		{ return bShowProgressionBar; }
	inline BOOL	GetExportAsObjects()		{ return bExportAsObjects; }
	inline BOOL	GetExportAsCharacter()		{ return bExportAsCharacter; }
	inline BOOL	GetExportAsAnimationOnly()	{ return bExportAsAnimationOnly; }
	inline BOOL	GetConvertPhysiqueToSkin()	{ return bConvertPhysiqueToSkin; }
	inline BOOL	GetStoreOnlyFilenames()		{ return bStoreOnlyTextureFilenames; }
	inline BOOL	GetRescaleScene()			{ return bRescaleScene; }
	inline BOOL	GetSaveBipedGeom()			{ return bSaveBipedGeom; }
	inline BOOL	GetGroupAsPlace()			{ return bGroupAsPlace; }
	inline BOOL	GetSelectionAsGroup()			{ return bSelectionAsGroup; }
	inline TSTR	GetCharacterName()			{ return szCharacterName.Str(); }
	inline TSTR	GetAnimationName()			{ return szAnimationName.Str(); }
	inline int	GetMeshFrameStep()			{ return nMeshFrameStep; }
	inline int	GetKeyFrameStep()			{ return nKeyFrameStep; }
	inline int  GetStaticFrame()			{ return 0; }
	inline int	GetCompressionLevel()			{ return nCompressionLevel; }
	inline int	GetReportLevel()			{ return nReportLevel; }
	inline Interface*	GetInterface()		{ return ip; }
	inline BOOL GetAlignAnimOnZ()			{ return bAlignAnimOnZ; }


	inline void	SetShowProgressionBar(BOOL v)		{ bShowProgressionBar = v; }
	inline void SetExportAsObjects(BOOL	v)			{ bExportAsObjects = v ; }
	inline void SetExportAsCharacter(BOOL	v)		{ bExportAsCharacter = v ; }
	inline void SetExportAsAnimationOnly(BOOL	v)	{ bExportAsAnimationOnly = v ; }
	inline void SetConvertPhysiqueToSkin(BOOL	v)	{ bConvertPhysiqueToSkin = v ; }
	inline void SetStoreOnlyFilenames(BOOL	v)		{ bStoreOnlyTextureFilenames = v ; }
	inline void SetRescaleScene	(BOOL	v)			{ bRescaleScene = v ; }
	inline void SetSaveBipedGeom(BOOL	v)			{ bSaveBipedGeom = v ; }
	inline void SetGroupAsPlace(BOOL	v)			{ bGroupAsPlace = v ; }
	inline void SetSelectionAsGroup(BOOL	v)			{ bSelectionAsGroup = v ; }
	inline void SetCharacterName(char* v)			{ szCharacterName = XString(v) ; }
	inline void SetAnimationName(char* v)			{ szAnimationName = XString(v) ; }
	inline void SetMeshFrameStep(int	v)			{ nMeshFrameStep = v ; }
	inline void SetKeyFrameStep(int	v)				{ nKeyFrameStep = v ; }
	inline void SetCompressionLevel(int v)				{ nCompressionLevel = v ; }
	inline void SetReportLevel(int v)				{ nReportLevel = v ; }
	inline void SetbAlignAnimOnZ(BOOL v)			{ bAlignAnimOnZ = v ; }
	
	inline void CopyUV(void* UVDest,void* UVSrc) {
		DWORD* Dst = (DWORD*)UVDest;	DWORD* Src = (DWORD*)UVSrc;
		*(Dst++) = *(Src++);	*Dst = *Src;
	}
	inline float FrameTime(TimeValue t) { return ((float )t-m_StartFrame)*m_InvFrameRate; }

	CKMesh* IsMeshInstance(void* mesh,Mtl* mtl);
	void    InsertNewMeshInstance(void* mesh,Mtl* mtl,CKMesh* ckmesh);

	XArray<char>	ReportBuffer;
	void RescaleScene();
	XString StrGroupIndent(); 


private:
	BOOL	bShowProgressionBar;
	BOOL	bExportAsObjects;
	BOOL	bExportAsCharacter;
	BOOL	bExportAsAnimationOnly;
	BOOL	bConvertPhysiqueToSkin;
	BOOL	bStoreOnlyTextureFilenames;
	BOOL	bRescaleScene;
	BOOL	bSaveBipedGeom;
	BOOL	bGroupAsPlace;
	BOOL	bSelectionAsGroup;
	BOOL	bAlignAnimOnZ;
	XString	szCharacterName;
	XString	szAnimationName;
	int		nMeshFrameStep;
	int		nKeyFrameStep;
	int		nCompressionLevel;
	int		nReportLevel;
	Interface*	ip;

	int			nTotalNodeCount;
	int			nCurNode;
	float		m_StartFrame,m_EndFrame,m_InvFrameRate;

	MtlKeeper				mtlList;
	Export2Virtools*			VirtoolsExporter;
	CKContext*				VirtoolsContext;
	XList<CKGroup*>			CKGroups;
	int						GroupIndent;
	XArray<NodeMeshMtl>		MeshTable;

	CKObjectArray *m_VirtoolsObjects;

	int						ReportBufferPos;
	void					Report(int InfoLevel,char *format, ...);

	//--- Hash table to retrieve Base Diffuse Material of Lightmap Shaders
	XHashTable< Mtl*, XString, XHashFun<XString> > m_lightmapBaseMaterials;
};



#define REPORT_NONE	  0
#define REPORT_HLEVEL 1
#define REPORT_MLEVEL 2
#define REPORT_LLEVEL 3

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品美女久久久久aⅴ| 日韩视频在线你懂得| 日韩av一二三| 国产精品人成在线观看免费| 7777精品伊人久久久大香线蕉的| 国产一区二区h| 亚洲第一激情av| 国产蜜臀av在线一区二区三区| 欧美日本乱大交xxxxx| 国产91精品入口| 美女网站色91| 亚洲444eee在线观看| 中文字幕亚洲在| 久久久亚洲国产美女国产盗摄| 91精品国产丝袜白色高跟鞋| 色综合咪咪久久| 粉嫩绯色av一区二区在线观看| 奇米四色…亚洲| 亚洲国产一区视频| 欧美经典一区二区| 欧美成人高清电影在线| 欧美日韩在线播放| av中文字幕不卡| 国产成人综合网| www.欧美精品一二区| 亚洲精品免费在线播放| 欧美日韩一区成人| www.成人网.com| 高清国产一区二区三区| 精品一区二区三区欧美| 午夜精品久久久| 亚洲午夜精品网| 亚洲精品伦理在线| 综合中文字幕亚洲| 日本一区二区三区高清不卡| 精品av久久707| 日韩一级片网址| 欧美一区二区三区小说| 欧美人妇做爰xxxⅹ性高电影| 欧美色欧美亚洲另类二区| 色综合色狠狠天天综合色| 99久久精品国产观看| 成人污污视频在线观看| 床上的激情91.| 懂色中文一区二区在线播放| 高清不卡在线观看| 国产不卡在线播放| 成人小视频在线| 成人av集中营| 成人av高清在线| 色哟哟一区二区在线观看| 欧洲国内综合视频| 欧美日韩精品一区二区三区| 欧美一区二区三区系列电影| 欧美大黄免费观看| 亚洲精品一区二区三区99| 久久亚洲精品小早川怜子| 国产人成亚洲第一网站在线播放| 国产精品久久三区| 亚洲色图制服丝袜| 亚洲一区中文在线| 日韩av在线免费观看不卡| 日本午夜精品视频在线观看 | 日韩免费视频一区| 日韩欧美高清在线| 久久久亚洲午夜电影| 自拍偷拍国产亚洲| 亚洲成人黄色影院| 精品一区免费av| 成人福利视频网站| 欧洲人成人精品| 欧美大片在线观看一区二区| 国产精品嫩草影院av蜜臀| 性做久久久久久免费观看| 久久超碰97人人做人人爱| 成人av在线资源| 欧美美女直播网站| 国产视频亚洲色图| 亚洲国产裸拍裸体视频在线观看乱了| 美洲天堂一区二卡三卡四卡视频| 岛国精品在线观看| 欧美人xxxx| 国产精品美女久久久久久久久| 亚洲国产三级在线| 国产精品99久久久久久久女警| 97精品久久久久中文字幕| 欧美一区二区黄| 亚洲人成在线播放网站岛国| 国内精品视频666| 91精品福利在线| 久久久精品影视| 天天综合天天综合色| 成人涩涩免费视频| 欧美一区二区三区公司| 国产精品国产三级国产三级人妇| 一本色道久久综合狠狠躁的推荐| 欧美日韩一本到| 欧美激情一区二区三区蜜桃视频| 亚洲电影一级黄| caoporen国产精品视频| 欧美成人乱码一区二区三区| 一区二区三区欧美| 国产成人免费av在线| 在线成人av网站| 亚洲美女偷拍久久| 国产福利精品导航| 538prom精品视频线放| 国产精品久久久久7777按摩| 蓝色福利精品导航| 欧美日韩国产片| 夜夜嗨av一区二区三区四季av| 国产精品自拍三区| 日韩精品一区二区三区中文精品| 亚洲一区二区三区视频在线| 成人ar影院免费观看视频| 精品国产乱码久久久久久免费| 亚洲第一综合色| 在线视频你懂得一区二区三区| 国产精品乱码一区二区三区软件 | 国模无码大尺度一区二区三区| 欧美午夜电影网| 中文字幕字幕中文在线中不卡视频| 激情成人综合网| 日韩欧美国产一二三区| 日韩黄色小视频| 欧美日本乱大交xxxxx| 亚欧色一区w666天堂| 欧美视频三区在线播放| 亚洲黄色av一区| 色噜噜久久综合| 亚洲欧美电影院| 91丨九色丨蝌蚪富婆spa| 中文字幕在线视频一区| 国产99久久久久| 国产欧美一区二区精品性色| 国产激情偷乱视频一区二区三区| 欧美精品一区二区三区高清aⅴ | 国产福利91精品| 久久久久亚洲综合| 国产精品99久| 中文字幕久久午夜不卡| av在线不卡网| 亚洲女人的天堂| 欧美探花视频资源| 日韩精品一卡二卡三卡四卡无卡| 91精品国产日韩91久久久久久| 蜜臀精品久久久久久蜜臀| 日韩三级在线免费观看| 精品一区二区三区在线播放 | 午夜影院在线观看欧美| 5858s免费视频成人| 美女国产一区二区| 精品国产欧美一区二区| 国产精品1区2区| 国产精品久久久久9999吃药| 在线影院国内精品| 石原莉奈在线亚洲二区| 日韩一卡二卡三卡四卡| 国产精品自拍三区| 亚洲欧美视频一区| 91麻豆精品国产自产在线观看一区| 男女性色大片免费观看一区二区 | 亚洲欧洲另类国产综合| 色婷婷精品久久二区二区蜜臂av | 日本中文字幕一区二区有限公司| 欧美丰满高潮xxxx喷水动漫| 极品少妇xxxx精品少妇偷拍| 中国色在线观看另类| 日本高清视频一区二区| 日韩电影在线一区| 久久午夜电影网| 91免费视频网址| 日韩成人dvd| 国产精品国产三级国产普通话99| 欧美唯美清纯偷拍| 精品一区二区在线免费观看| 亚洲蜜臀av乱码久久精品| 在线综合视频播放| 成人精品在线视频观看| 亚洲午夜国产一区99re久久| 久久精品一二三| 在线亚洲+欧美+日本专区| 国产综合色产在线精品| 亚洲美女免费在线| 欧美一级一区二区| 不卡的av在线| 久久99热这里只有精品| 亚洲欧美日韩系列| 欧美电影免费观看高清完整版在线 | 色综合咪咪久久| 麻豆成人在线观看| 国产精品丝袜一区| 欧美男生操女生| 成人av第一页| 精品一区二区在线视频| 亚洲一区二区三区在线看| 国产拍欧美日韩视频二区| 欧美日韩二区三区| 不卡在线观看av| 国产专区欧美精品|