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

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

?? macro_baketextures.mcr

?? 3dmax導出3d模型二次開發插件
?? MCR
?? 第 1 頁 / 共 5 頁
字號:
		myElement = _obj.GetBakeElement( i )
		if myElement.enabled == false then
		(
			-- format "skipping disabled element: %\n" (myElement as string)
			continue
		)
			
		searchName = _className as name
		-- format "search element: % == % is % \n" (classof myElement as string)(_className)((classof myElement as string)==_className)
		eleName = (classof myElement as string) as name
		if eleName == searchName then
			return ( i )
	)
	return 0
)

fn validateDirectory _dirName  =
(
	-- create the dir if we don't have one
	local dirList =	#()
	dirList = getDirectories _dirName 
	--format "directories = %\n" (dirList as string)
	if dirList.count == 0 then
	(
		--format "make directory = %\n" _dirName
		-- make a new dir
		makeDir( _dirName )
	)
	
	return true
)	

-- utility to check the input filename, if not valid, create one from the element & path
fn validateFileName _element _fileName =
(
	if( _fileName == undefined ) or ( _fileName == "" ) then
	(
		 return ((commonBakeProps.GetFilePath()) + _element.fileName)
	)
	return _fileName
)

-- utility to make a formated number 0000 style
function formatNumber _num =
(
	s = _num as string
	-- format "s = %, s.count = %, " s (s.count)
	-- pad out w/ 0's
	for i = s.count to 3 do
		s = "0" + s
	-- format " final s = %\n" s
	return s
)


------------------------------------------------------------------
--
--	Function to create/update bitmaps on the elements of the object
--
function updateBitmapFilenames	_obj _nFrame =
(
	--format "    update filenames on elements\n"
	path = commonBakeProps.GetFilePath()
	
	-- make the file number
	curFrameString = formatNumber( _nFrame )
		
	for i = 1 to _obj.NumBakeElements() do
	(
		-- get element & filename
		element = _obj.GetBakeElement( i )
		fname = element.filename
		fname = selectedObjectProps.makeFilename (_obj)(element)(fname)

		-- add the path & save it all in fileType
		if (fname[1] == ".") or (fname[1] == "\\" ) or (fname[1] == "/") then
			element.fileType = fname -- has a path
		else
			element.fileType = path + fname
			
	) -- end, for each element

) -- end, update bitmap filenames


------------------------------------------------------------------
--
--	Functions to map bakechannels to material maps of any type
--	based on settings from an .ini file
--

-- look for name in the inList, return index or 0 if not found
function findName _name _inList =
(
	for n = 1 to _inList.count do
	(
		if (_name as name) == (_inList[ n ] as name) then
			return n
	)
	return 0
)

-- read a file section & set up the bakemap to stdmtl channel mapping	
function readBakeMtlMappingsSection	_sectionName =
(
	-- first get the shader
	s = getINISetting( bakeMtlMappingsIniFile)(_sectionName)("shaderName")
	useShader = if s == undefined or s == "" then "blinn" else s
	
	-- for each possible stdmtl texture
	for n = 1 to stdTextures.count do
	(
		-- see if its assigned in this section
		s = getINISetting( bakeMtlMappingsIniFile)(_sectionName)(stdTextures[n]) 
		bakeTextures[ n ] = if( s == undefined ) then "" else s
		
		--if bakeTextures[ n ] != "" then
		--	format "assign map: % <-- % \n" stdTextures[n] bakeTextures[ n ]
	)
)
				
-- this functions gets the list of available mappings
function readBakeMtlMappings =
(
	-- get the sections of the ini file, the distinct mappings
	-- these are listed in the file as DeclareFileMapping1, DeclareFileMapping2, .. since we cant discover 
	-- section names
	fileMappings = #()
	for i = 1 to numMaxFileMappings do
	(
		key = "DeclareFileMapping" + (i as string)
		s = getINISetting( bakeMtlMappingsIniFile )("DeclareFileMappings")( key )
		if s == undefined or s == "" then continue
		-- format "add mapping: % \n" s
		append (fileMappings) (s)
	)
	-- format "file mappings = % \n" (fileMappings as string)
)		

-- this sets up the given mapping from elements to map channels
function selectBakeMtlMapping _mappingName =
(
	-- first check for valid mapping name
	if findName(_mappingName)(fileMappings) == 0 then
		return 0
		
	-- this creates the mapping between stdMtl channels & bakeElements 	
	readBakeMtlMappingsSection( _mappingName )
)

-- this function clear all the textures on a material
fn clearTextures _toMtl =
(
	local mapName = ""
	theShader = _toMtl.shaderByName
	
	format "clear textures, shader = %\n" theShader
	
	if theShader == "Anisotropic" then
	(
		for i = 1 to anisoTextures.count do
		(
			mapName = anisoTextures[ i ]
			SetProperty( _toMtl )( mapName as name )( noTexture() )
		)
	)
	else if theShader == "Multi-Layer" then
	(
		for i = 1 to stdTextures.count do
		(
			mapName = stdTextures[ i ]
			SetProperty( _toMtl )( mapName as name )( noTexture() )
		)
	)
	else if theShader == "Strauss" then
	(
		for i = 1 to straussTextures.count do
		(
			mapName = straussTextures[ i ]
			SetProperty( _toMtl )( mapName as name )( noTexture() )
		)
	)
	else if theShader == "Oren-Nayar-Blinn" then
	(
		--format "clear onb textures\n"
		for i = 1 to onbTextures.count do
		(
			mapName = onbTextures[ i ]
			format "clear map = % \n" mapName
			SetProperty( _toMtl )( mapName as name )( noTexture() )
		)
	)

	else
	(
		-- just do the standard phong/blinn/metal maps
		-- format "clear p,b,m textures\n"
		for i = 1 to pbmTextures.count do
		(
			mapName = pbmTextures[ i ]
			SetProperty( _toMtl )( mapName as name )( noTexture() )
		)
	)
	format "end clearTextures\n"
)

-- this applies maps, via the current element-to-mapChannel mapping, to the given material,
-- assigning the available elements to the material channels given by the file mapping
function applyIniFileMtlMapping _obj _toMtl =
(	
	format "apply ini mapping\n"
	-- first set the shader
	_toMtl.shaderByName = useShader
	_toMtl.adLock = false
	_toMtl.adTextureLock = false
	
	clearTextures( _toMtl )
	
	-- for each possible bake element
	for nEle = 1 to _obj.NumBakeElements() do
	(
		theElement = _obj.GetBakeElement( nEle )
		
		if theElement.enabled == false then
			continue -- skip disabled elements
		
		-- look for the element name in the map
		n = findName( classof theElement as string )( bakeTextures )
		if n == 0 then 
		(
			format "no match on % \n" ( classof theElement as string )
			continue	-- no match
		)
		
		-- got one, get the file name 
		fname = theElement.fileType
		if fname == undefined or fname == "" then
		(
			path = commonBakeProps.GetFilePath()
			fname = path + theElement.fileName
		)
		
		-- & get the channel name from stdTextures...
		mapName = stdTextures[ n ]
		format "   update map  % w/ texture file: % \n" mapName fname
		
		-- NB: assign indirectly to the just found channel....does this work?
		theMap = bitmapTexture filename:fname
		theMap.coords.mapChannel = _obj.bakeChannel 
		SetProperty( _toMtl )( mapName as name )( theMap )
		
	) -- end, for each element
	format "end apply maps\n"
) -- end, apply maps function


------------------------------------------------------------------
--
--	Function looks for complete, blend map, diffuse or the first map
--	 and applies the found map to the materials diffuse map channel.
--
function applyDefaultFileMapping _obj  _bakeMtl =
(
	-- get diffuse or complete bake element
	nEle = findByClass (_obj)("CompleteMap")
	if nEle <= 0 then
	(	-- not found, look for blend
		nEle = findByClass (_obj)("BlendMap")
	)
	if nEle <= 0 then
	(	-- not found, look for blend
		nEle = findByClass (_obj)("DiffuseMap")
	)

	if nEle <= 0 then
	(	-- nothing found, just get the first enabled element, whatever it is
		for n = 1 to _obj.NumBakeElements() do
		( 
			local elem = _obj.GetBakeElement( n )
			if elem.enabled then
			(
				nEle = n
				exit	-- break the loop
			)
		)
	)

	-- assign to material
	element = _obj.GetBakeElement( nEle )
	--format "        update map using element: % \n" (element as string)
	
	fname = validateFileName( element )( element.fileType )
	--format "        update diffuse: % \n" fname
	_bakeMtl.diffuseMap = bitmaptexture filename:fname
	_bakeMtl.selfIllumAmount = 100
	_bakeMtl.diffuseMap.coords.mapChannel = _obj.bakeChannel 
	
	-- now do the optional maps
--	nEle = findByClass (_obj)("SpecularMap")
--	if nEle > 0 then
--	(	-- found, apply to specular level
--		element = _obj.GetBakeElement( nEle )
--		fname = validateFileName( element )( element.fileType )
--		format "        update specular: % \n" fname
--		_bakeMtl.specularLevelMap = bitmaptexture filename:fname
--	)
--	
--	nEle = findByClass (_obj)("AlphaMap")
--	if nEle > 0 then
--	(	-- found, apply to opacity
--		element = _obj.GetBakeElement( nEle )
--		fname = validateFileName( element )( element.fileType )
--		format "        update opacity: % \n" fname
--		_bakeMtl.opacityMap = bitmaptexture filename:fname
--	)
	
	-- cd also apply the lighting map to the diffuseLevelMap & specularLevel too if 
	-- not used by the specular map above.

)


-----------------------------------------------------------------
--
--	utility fns for handling hw shaders
--

-- get the viewport manager for the material
fn getVPManager _mtl =
(
	manager = DXShaderManager.getViewportManager( _mtl )
	if( manager == undefined ) then
		manager = DXShaderManager.addViewportManager( _mtl )
	return manager
)

-- activate/deactivate the shader
fn activateHWShader	_mtl _isOn	=
(
	manager = getVPManager( _mtl )
		
	-- d'activate the hardware material, anything else to do ????
	if manager != undefined then
		manager.activateEffect( _mtl )( _isOn )
)


-- look for the requested shader in the effect list, set it to the manager if found
fn setHWShader	_manager	_shaderName =
(
	nShaders = _manager.getNumViewportEffects()
	effect = undefined
	-- Search for the effect based on name	
	for i = 1 to nShaders do
	(
		-- match shader by name
		if( _manager.getViewportEffectName( i ) == _shaderName ) then
		(
			--format "set viewport shader =  %  @ index % \n" _shaderName i
			effect = _manager.setViewportEffect( i )
			exit	-- break the loop
		)
	)
	--format "effect = % \n" (effect as string)
	
	return effect
)

-- get the list of hwShaders into the hwShaders array
fn getHWShaderList =
(
	i = 1
	while( i < 16 and (superClassOf meditMaterials[i] as string) != "material" ) do
		i += 1
	if i == 16 then return -1
	mgr = getVPManager( meditMaterials[i] )
	if mgr == undefined then return -1
	nShaders = mgr.getNumViewportEffects() 
	hwShaders = #()
	for i = 1 to nShaders do
		append( hwShaders )( mgr.getViewportEffectName( i ) )
)


------------------------------------------------------------------
--
--	Function to set up the light map dx shader
--
function SetupLightMapShader	_obj	_bakeMtl =
(
	-- look for light & diffuse maps
	nEleLt = findByClass (_obj)("LightingMap")
	nEleDiff = findByClass (_obj)("DiffuseMap")
	--format "lightMap index = %, diffMap index = %\n" nEleLt nEle
	if nEleDiff > 0 and nEleLt > 0 then
	(
		-- install the dx shader for light maps on the bake material
		manager = getVPManager( _bakeMtl )

		-- find the shader & make it active
		effect = setHWShader( manager )( lightMapHWShaderName  )
		-- check it
--		if (effect == undefined) or (effect == null) then
		if (effect == undefined) then
		(
			format "effect undefined\n"
			return false
		)

		-- diffuse map first		
		effect.diffuse_filename = _obj.material.originalMaterial.diffuseMap.filename  
		
		--element = _obj.GetBakeElement( nEleDiff )
		--effect.diffuse_filename = validateFileName( element )( element.fileType )
		--format "set diffuse filename = % \n" effect.diffuse_filename

		-- then the light map
		element = _obj.GetBakeElement( nEleLt )
		effect.lightmap_filename = validateFileName( element )( element.fileType )
		--format "set lightMap filename = % \n" effect.lightmap_filename

		-- set the mapping channel to use

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲午夜av在线| 欧美日韩成人激情| 国产美女视频91| 精品一区二区三区在线播放视频| 午夜精品久久久久久不卡8050| 亚洲精品免费在线观看| 亚洲精品乱码久久久久久久久| 国产精品乱人伦一区二区| 欧美极品另类videosde| 欧美激情中文不卡| 国产亚洲精品久| 国产欧美一区二区精品婷婷| 国产日韩欧美在线一区| 中文字幕不卡的av| 日本韩国精品在线| 在线观看视频欧美| 欧美三级电影精品| 制服丝袜av成人在线看| 欧美顶级少妇做爰| 91麻豆精品国产综合久久久久久| 欧美一区国产二区| 久久亚洲综合色一区二区三区| 久久女同性恋中文字幕| 国产精品卡一卡二| 亚洲一区二区三区四区在线免费观看 | 精久久久久久久久久久| 精品一区中文字幕| 高清av一区二区| 97精品久久久午夜一区二区三区 | 在线综合视频播放| 欧美精品一区二区三区蜜桃| 国产欧美一区二区精品性| 中文字幕的久久| 亚洲午夜影视影院在线观看| 日日夜夜一区二区| 欧美aaaaaa午夜精品| 国产精品一区二区视频| 色综合久久久久综合体| 67194成人在线观看| 久久免费看少妇高潮| 日韩伦理免费电影| 日本不卡不码高清免费观看| 亚洲人午夜精品天堂一二香蕉| 亚洲成人一区二区在线观看| 亚洲一区二区在线视频| 精品无人码麻豆乱码1区2区 | 成人视屏免费看| 在线视频欧美精品| 日韩欧美亚洲另类制服综合在线| 国产精品污网站| 亚洲第一精品在线| 国产在线精品免费av| 色香蕉成人二区免费| 日韩午夜激情av| 成人免费在线观看入口| 美女高潮久久久| 99精品久久99久久久久| 日韩一区二区三区av| 欧美国产激情一区二区三区蜜月| 亚洲123区在线观看| 高清av一区二区| 91精品国产免费久久综合| 国产精品天天摸av网| 奇米精品一区二区三区四区| eeuss鲁片一区二区三区在线看| 欧美一区二区日韩| 亚洲女同一区二区| 国产精品影视网| 欧美一区二区免费视频| 亚洲蜜臀av乱码久久精品蜜桃| 国产一区二区三区免费看 | 国产精品国产三级国产aⅴ无密码| 亚洲图片有声小说| 国产成人av资源| 欧美电视剧在线观看完整版| 成人黄色777网| 国产在线一区二区| 欧美日韩国产综合一区二区| 国产精品热久久久久夜色精品三区| 日本vs亚洲vs韩国一区三区二区| 91亚洲精品乱码久久久久久蜜桃 | 亚洲电影在线播放| www.性欧美| 久久精品欧美一区二区三区不卡| 天天综合色天天综合| 91精彩视频在线观看| 国产精品不卡视频| 国产成人在线视频免费播放| 欧美一级生活片| 日韩影院在线观看| 欧美人牲a欧美精品| 亚洲国产综合在线| 色婷婷综合久久久久中文| 国产精品欧美久久久久无广告| 经典三级一区二区| 日韩写真欧美这视频| 日韩精品国产精品| 欧美日韩综合一区| 亚洲一区二区三区影院| 欧洲精品中文字幕| 亚洲精品乱码久久久久久黑人| 一本在线高清不卡dvd| 中文字幕一区二区不卡| 成人黄色电影在线| 亚洲天堂福利av| 91黄色免费看| 亚洲综合一区二区三区| 在线观看网站黄不卡| 亚洲精品免费一二三区| 欧美在线观看一二区| 亚洲超碰97人人做人人爱| 在线视频欧美精品| 午夜国产精品一区| 欧美电影一区二区三区| 91视频免费观看| 欧洲国产伦久久久久久久| 一区二区三区国产| 欧美情侣在线播放| 日本成人在线不卡视频| 制服丝袜日韩国产| 国产一区二区视频在线播放| 国产欧美一区二区三区网站| 国产成人精品影视| 亚洲女子a中天字幕| 99精品在线免费| 亚洲综合av网| 69精品人人人人| 国产乱妇无码大片在线观看| 中文字幕电影一区| 欧美少妇bbb| 美女免费视频一区二区| 国产欧美一区二区三区网站| 色综合视频在线观看| 久久综合久久久久88| 国产成人在线影院| 亚洲男同性视频| 91精品国产色综合久久不卡蜜臀| 精品一区二区三区在线播放| 国产拍揄自揄精品视频麻豆| 色综合久久中文字幕综合网| 日本三级韩国三级欧美三级| 26uuu国产在线精品一区二区| www.日本不卡| 日韩国产欧美一区二区三区| 久久综合色鬼综合色| 色94色欧美sute亚洲线路一ni | 狠狠色综合色综合网络| 国产精品日韩精品欧美在线| 欧美日韩国产在线播放网站| 国产一区二区三区久久悠悠色av| 国产精品拍天天在线| 欧美日韩在线播放三区| 国产在线看一区| 亚洲一级片在线观看| 日韩精品一区二区三区在线| 久久夜色精品国产噜噜av| 一区二区三区四区在线免费观看 | 91精品国模一区二区三区| 久久精品理论片| 亚洲精品久久久久久国产精华液| 日韩一级精品视频在线观看| 99久久精品免费看国产免费软件| 日韩国产成人精品| 国产精品国产三级国产普通话蜜臀 | 国产精品理论在线观看| 欧美日韩国产高清一区二区三区| 国产成人免费高清| 日韩精品视频网| 中文字幕色av一区二区三区| 日韩一二三区视频| 91片黄在线观看| 国产精品综合网| 日韩国产在线观看| 欧美人与禽zozo性伦| 91蜜桃传媒精品久久久一区二区 | 日韩欧美三级在线| 91视频国产资源| 国产成人福利片| 日韩av午夜在线观看| 亚洲欧美aⅴ...| 国产精品久久久久影院老司| 欧美成人官网二区| 欧美日韩一区高清| 99久久精品免费| 国产凹凸在线观看一区二区| 麻豆精品蜜桃视频网站| 亚洲成av人片在线| 亚洲国产一二三| 91精品国产综合久久精品| 99久久综合国产精品| 国产一区二区0| 激情综合网av| 蜜桃在线一区二区三区| 亚洲成av人**亚洲成av**| 亚洲最大的成人av| 亚洲欧洲99久久| 国产精品午夜在线| 久久亚洲欧美国产精品乐播| 欧美成人乱码一区二区三区| 欧美日韩亚洲另类|