⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ogremateriallib.ms

📁 赫赫大名的 OGRE 游戏引擎
💻 MS
字号:
-- write into "outfile" the selected OgreMaterial
-- precondition: iskindof material OgreMAterial == true.
-- Use export OgreMaterial.
function writeOgreMaterial material outFile =
(
	local t, matname, mat;

	mat = material ;
	
	if (mat != undefined) then 
	(
		matname = material.name ;	
		format "material %\n" matname to:outFile ;
		format "{\n" to:outFile ;
		format "    technique\n" to:outFile ;
		format "    {\n" to:outFile ;
		format "        pass\n" to:outFile ;
		format "        {\n" to:outFile ;
		format("            ambient % % %\n") (mat.ambient.r/255.0) (mat.ambient.g/255.0) (mat.ambient.b/255.0) to:outFile ;
	    format("            diffuse % % %\n") (mat.diffuse.r/255.0) (mat.diffuse.g/255.0) (mat.diffuse.b/255.0) to:outFile ;
    	format("            specular % % % %\n") (mat.specular.r/255.0) (mat.specular.g/255.0) (mat.specular.b/255.0) (mat.specularLevel*100.0) to:outFile ;
		format("            emissive % % %\n") (mat.selfIllumColor.r/255.0) (mat.selfIllumColor.g/255.0) (mat.selfIllumColor.b/255.0) to:outFile ;
		)
		if ((mat.diffusemap != undefined) and (iskindof mat.diffusemap Bitmaptexture)) then
		(	
			t = filterstring mat.diffusemap.filename "\\" ;
			format "            texture_unit\n" to:outFile ;
			format "            {\n" to:outFile ;
			format "                texture % \n" t[arrayLength t] to:outFile ;
			format "            }\n" to:outFile ;
		)
		format "        }\n" to:outFile ;
		format "    }\n" to:outFile ;
		format "}\n" to:outFile ;
)

function exportOgreMaterial material outName =
(
    local outFile ;
	if (classof material == OgreMaterial or classof material == ogreMaterial) then
	(
	    outFile = createfile outName ;
		writeOgreMaterial material outFile ;
		close outFile ;
		messageBox "Exporting material successful !" ;
	)
	else
	(
		messageBox "You have to choose an OgreMaterial." ;
	)
)

---------------------------------------------------------------
-- Writes a standard material in a material script
-- prefix will be before material name. (prefix+name)
-- used for multi material
---------------------------------------------------------------
function writeStandardMaterial material prefix outFile =
(
	local t ;
	matname = replaceSpaces material.name ;
	-- writes header	
	format "material %\n" (prefix+matname) to:outFile ;
	format "{\n" to:outFile ;
	format "    technique\n" to:outFile ;
	format "    {\n" to:outFile ;
	format "        pass\n" to:outFile ;
	format "        {\n" to:outFile ;

	format("            ambient % % %\n") (material.ambient.r/255.0) (material.ambient.g/255.0) (material.ambient.b/255.0) to:outFile ;
    format("            diffuse % % %\n") (material.diffuse.r/255.0) (material.diffuse.g/255.0) (material.diffuse.b/255.0) to:outFile ;
    format("            specular % % % %\n") (material.specular.r/255.0) (material.specular.g/255.0) (material.specular.b/255.0) (material.specularLevel*100.0) to:outFile ;
	format("            emissive % % %\n") (material.selfIllumColor.r/255.0) (material.selfIllumColor.g/255.0) (material.selfIllumColor.b/255.0) to:outFile ;
	-- tests if there is (or not) a diffuse map.
	if ((material.diffusemap != undefined) and (iskindof material.diffusemap Bitmaptexture)) then
	(	
		t = filterstring material.diffusemap.filename "\\" ;
		format "            texture_unit\n" to:outFile ;
		format "            {\n" to:outFile ;
		format "                texture % \n" t[arrayLength t] to:outFile ;
		format "            }\n" to:outFile ;
	)
	format "        }\n" to:outFile ;
	format "    }\n" to:outFile ;
	format "}\n" to:outFile ;

)

---------------------------------------------------------------
-- Exports a standard material
-- PRE: material is a standard material
-- Use exportMaterial function.
---------------------------------------------------------------
function exportStandardMaterial material outFile =
(
	local sub,i,matname ;
	matname = replaceSpaces material.name ;
	writeStandardMaterial material "" outFile ;
)


---------------------------------------------------------------
-- Exports a multi material
-- PRE: material is a multi material
-- Use exportMaterial function.
---------------------------------------------------------------
function exportMultiMaterial material outFile=
(
	local sub,i,matname ;

	matname = replaceSpaces material.name ;
	
	i=0 ;
	for sub in material.materiallist do (
		i+=1 ;
		writeStandardMaterial sub (material.name+"/") outFile ;
		format "\n" to:outFile ;
	)
)



---------------------------------------------------------------
-- Exports a material
-- call the fonction linked to the material type
---------------------------------------------------------------
function exportMaterial material outname =
(
	local outFile ;
	outFile = createfile outName ;
		
	if (material!=undefined and classof material == MultiMaterial) then
		exportMultiMaterial material outFile ;
	else (
		if (material!=undefined and classof material == StandardMaterial) then
			exportStandardMaterial material outFile ;
		else
			messageBox "You have to choose a Standard Material or a MultiMaterial." ;
	)
	
    close outFile ;
	messageBox "Exporting material successful !" ;
)


---------------------------------------------------------------
-- Exports all the materials used in the scene
---------------------------------------------------------------
function exportAllSceneMaterials outname =
(
	local outFile ;
	outFile = createfile outname ;
	
	for material in sceneMaterials do
	(			
		if (material!=undefined and classof material == MultiMaterial) then
			exportMultiMaterial material outFile ;
		else (
			if (material!=undefined and classof material == StandardMaterial) then
				exportStandardMaterial material outFile ;
		)
		format "\n" to:outFile ;
	)		
    close outFile ;
	messageBox "Exporting all materials in the scene successful !" ;
	
)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -