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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? macro_baketextures.mcr

?? 3dmax導(dǎo)出3d模型二次開(kāi)發(fā)插件
?? MCR
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
		effect.lightmap_mapping = _obj.bakeChannel
		effect.diffuse_mapping = 1
		-- effect.diffuse_mapping = _obj.bakeChannel
		
		_bakeMtl.diffusemap = undefined 	-- toss old diffuse map

		-- activate the hardware material
		manager.enabled = true
		manager.activateEffect _bakeMtl true
		
		redrawviews() -- why is this here???
		return true
	) -- end, have light & diffuse maps
	
	messageBox( "You must have both a diffuse map and a lighting \n  map to use the LightMap shader." )
	return false -- error exit
)
 
function setupGeneralHWShader _obj _bakeMtl =
(
	manager = getVPManager( _bakeMtl )

	-- find the shader & make it active
	effect = setHWShader( manager )( generalHWShaderName  )
	-- check it
	if (effect == undefined) then
	(
		format "effect undefined\n"
		return false
	)
	
	-- turn off the maps we won't use, to be sure
	effect.BUMP_ON = effect.DETAIL_ON = effect.REFLECTION_ON = false 
	
	-- do the static colors
	effect.COLOR_AMBIENT = _bakeMtl.ambient
	effect.COLOR_DIFFUSE = _bakeMtl.diffuse
	effect.COLOR_SPECULAR = _bakeMtl.specular
	effect.SPIN_ALPHA = _bakeMtl.opacity / 100.0
	effect.SPIN_TEXSCALE = 0.0

	--	diffuse map first
	if ( (nEle = findByClass (_obj)("DiffuseMap")) > 0 ) then
	(
		element = _obj.GetBakeElement( nEle )
		fname = validateFileName( element )( element.fileType )
		effect.DIFFUSE = openBitmap( fname )
		effect.DIFFUSE_ON = true
		effect.MAP_DIFFUSE1 = _obj.bakeChannel
		--format "set diffuse map = % \n" (effect.DIFFUSE)
	) else (
		effect.DIFFUSE_ON = false
	)
	
	--	then specular
	if ( (nEle = findByClass (_obj)("SpecularMap")) > 0 ) then
	(
		element = _obj.GetBakeElement( nEle )
		fname = validateFileName( element )( element.fileType )
		effect.MASK = openBitmap( fname )
		effect.SPECULAR_ON = true
		effect.MAP_SPECULAR = _obj.bakeChannel
		--format "set specular map = % \n" (effect.SPECULAR )
	) else (
		effect.SPECULAR_ON = false
	)
	
	--	then normals
	if ( (nEle = findByClass (_obj)("NormalsMap")) > 0 ) then
	(
		element = _obj.GetBakeElement( nEle )
		fname = validateFileName( element )( element.fileType )
		effect.NORMAL = openBitmap( fname )
		effect.NORMAL_ON = true
		effect.MAP_BUMP = _obj.bakeChannel
		effect.SPIN_BUMPSCALE = 1000.0	-- what's the right value here? 1000 - 3000
		--format "set normal map = % \n" (effect.NORMAL )
	) else (
		effect.NORMAL_ON = false
	)
	
	_bakeMtl.diffusemap = undefined 	-- toss old diffuse map
	-- activate the hardware material 	manager.enabled = true
	manager.activateEffect _bakeMtl true
	
	redrawviews() 
)


------------------------------------------------------------------
--
--	Function to update the output material & create shells if needed
--
function updateMaterial   _obj =
(
	format "    update material on % \n" _obj.name
	
	materialType = (classof _obj.material as string)
--	format "Material Type:	% \n" materialType

	-- if the material is already a shell material, update only the result material
	if (materialType != "Shell_Material") then
	(
		-- Make a new shell material and set it up
		 origMaterial = _obj.material
		if origMaterial == undefined then
		(	-- it's a dummy material, make a real one
			origMaterial = standard()
			origMaterial.diffuse = _obj.wireColor
		)
		newMaterial = Shell_material()
		nm = newMaterial.name
		newMaterial.name = _obj.name + "_" + nm
		newMaterial.originalMaterial = origMaterial
		
		undo on (
		_obj.material = newMaterial
		-- format "        create shell material, orig: %  type: % \n" (origMaterial as string)(materialType)
		)		
		-- standard material
		_obj.material.bakedMaterial = standard()
		_obj.material.bakedMaterial.name = "baked_" + origMaterial.name
	
	) -- end, create shell material
	
	-- now update the baked material
	bakeMaterial = _obj.material.bakedMaterial

	-- setup the material according to the selected output shader/mapping....
	case of
	(
		(commonBakeProps.dUseShader.selection == 1):
		(	
			-- default
			activateHWShader( bakeMaterial )( false )
			applyDefaultFileMapping( _obj )( bakeMaterial )
			-- show the texture in the vp?
			if ( _obj.material != undefined) \
				and (bakeMaterial!=undefined) \
				and (bakeMaterial.diffusemap != undefined) then
			(	
				ShowTextureMap 	_obj.material \
					bakeMaterial.diffusemap \
					commonBakeProps.cBakedInVP.checked
			)				
		)
		
		(useHWShader == 0) : 
		(
			-- stdmtl + file mapping
			activateHWShader( bakeMaterial )( false )
			applyIniFileMtlMapping( _obj )( bakeMaterial )
			-- show the texture in the vp?
			if ( _obj.material != undefined) \
				and (bakeMaterial!=undefined) \
				and (bakeMaterial.diffusemap != undefined) then
			(	
				format "show texture map\n"
				ShowTextureMap 	_obj.material \
					bakeMaterial.diffusemap \
					commonBakeProps.cBakedInVP.checked
				format "end show texture map\n"
			)				
		)
		
		(useHWShader > 0) : 
		(
			-- hw shaders 
			if hwShaders[ useHWShader ] == lightMapHWShaderName  then
				setupLightMapShader( _obj )( bakeMaterial )
			else if hwShaders[ useHWShader ] == generalHWShaderName  then
				setupGeneralHWShader( _obj )( bakeMaterial )
				
			-- extend w/ custom shaders here......
			-- else if hwShaders[ useHWShader ] == myHWShaderName  then
			-- 		setupMyHWShader( _obj )( bakeMaterial )
				
			--else
			--	messageBox "Unknown shader = %, index = % \n" ( hwShaders[ useHWShader ] )( useHWShader )
			
		)
	)-- end, case
	
	-- which material do we use for the viewport
	_obj.material.viewportMtlIndex = if( commonBakeProps.cBakedInVP.checked ) then 1 else 0
	
	format "end update material\n"
					
) -- end, update material

----------------------------------------------------------------------------
--
-- these routines collect the file names for a frame & then spplys them
-- prior to material updating
--
fn collectUpdateFiles _obj =
(
	--format "on object: % \n" (_obj as string)
	for i = 1 to _obj.numBakeElements() do
	(
		-- get the element
		ele = _obj.getBakeElement( i )	
		
		-- save the file name,
		updateFileNames[ i ] = ele.fileType
--		format "	save filename = %\n" ele.fileType
	)
)

-- apply collected filenames to object elements
fn applyUpdateFiles _obj =
(
	--format "restore files on object: % \n" (_obj as string)
	for i = 1 to _obj.numBakeElements() do
	(
		-- get the element
		ele = _obj.getBakeElement( i )	
		
		-- restore the file name,
		if updateFileNames[ i ] != undefined then
			ele.fileType = updateFileNames[ i ] 
	
--		format "	restore filename = %\n" ele.fileType
	)
)

-----------------------------------------------------------------------------
--
--	these functions remove the flatteners, shell & baked materials from a scene
--	reattaching the original materials to the nodes
--
function removeFlatteners  =
(
	local theSelected = if (commonBakeProps.rSceneType.state) == 1 then 
					(selection as array)
				-- bake all
				else if (commonBakeProps.rSceneType.state) == 2 then 
					(geometry as array)

	--format "remove flatteners\n"
	for curObj in theSelected do
	(
		if( objectIsBakable( curObj ) == false ) then
		(
				--format "ignoring object: % \n" (classof curObj as string)
				continue
		)
		
		deleteAutoFlatten( curObj )

	) -- end, for each object
)

						
function removeBakeMaterials  =
(
	--format "remove bake materials\n"
	local theSelected = if (commonBakeProps.rSceneType.state) == 1 then 
							(selection as array)
						-- bake all
						else if (commonBakeProps.rSceneType.state) == 2 then 
							(geometry as array)

	for curObj in theSelected do
	(
		deleteBakeMaterial( curObj )
		
	) -- end, for each object
	
) -- end, removeBake materials


----------------------------------------------------------------------------
--
--	Routines to handle file checking
--
-- message box to confirm overwrite of existing files
rollout fileOverwriteBox "File Exists" width:400 height:113
(
	button bCancel "Cancel Render" pos:[202,63] width:92 height:24
	button bOverwriteFiles "Overwrite Files" pos:[99,63] width:87 height:24
	checkbox cNotAgain "Don't show again" pos:[10,90] width:120 height:18 checked:false 
	groupBox gFile "Confirm File Overwrite:" pos:[3,8] width:396 height:50
	edittext eFileName "" pos:[4,27] width:390 height:22 enabled:false

	on fileOverwriteBox open do
	(
		-- format "conflicted filename = %,   val = % \n" overwriteFileName overwriteVal 
		eFilename.text = overwriteFileName 
	)
	
	on bCancel pressed do 
	(
		gTextureBakeOverwriteFilesOk = 0
		destroydialog ( fileOverwriteBox )
	)
	on bOverwriteFiles pressed do
	(
		gTextureBakeOverwriteFilesOk= if cNotAgain.checked then 2 else 1
		destroydialog ( fileOverwriteBox )
	)
	
) -- end, file overwrite dialog


-- returns true if ok to overwrite 
fn okToOverwrite _fileName =
(
	if gTextureBakeOverwriteFilesOk < 2 then -- if 0 or 1 ...
	(
		overwriteFileName = _fileName
		createDialog  fileOverwriteBox  modal:true
	)		
	return( gTextureBakeOverwriteFilesOk > 0 )
)

-- resets the "don't ask again" flag
fn resetFileOverwrite = ( 
	gTextureBakeOverwriteFilesOk = 0 
)

-- function to see if files already exist, then check if ok to over write it.
function checkFileOverwrite _obj =
(
	for i = 1 to _obj.numBakeElements() do
	(
		-- get the element
		ele = _obj.getBakeElement( i )	
		
		-- see if the file exists
		if (getFiles( ele.fileType )).count > 0 then
		(
			--format "file exists: % \n" (ele.fileType)
			-- it exists, what do we do?
			if okToOverwrite( ele.fileType ) then
			(
				--format "ok to overwrite file\n"
				-- deleteFile( ele.fileType ) -- delete so we can check for cancel
			) else (
				--format "cancel\n"
				return false -- cancel render
			)
				
		) -- end, file exists
	) -- end, for each element
	
	return true
)



-----------------------------------------------------------------------------------------
--
--	these functions parse a frame number/range string into individual sequences
--

-- this is the actual string parser
function parseFrameString _str _strPos =
	(
		n = _strPos
		start = end = undefined
		numStr = ""
	
		--format "parse frame string = %, pos = % \n" _str _strPos
		
		numEnd = false
		-- parse into tokens separated by commas, they will have one or two numbers and a dash
		while n <= _str.count and _str[n] != "," do
		(
			if _str[n] == "-" then
			(
				if start != undefined then 
				(
					messageBox "Incorrect range in frame string"
					return 0
				)
				else
				(
					start = if numStr.count > 0 then (numStr as integer) else -1 -- set first number
					-- format "found range mark, s = % n = % ...\n" numStr start
					numStr = "" -- reset string to look for second number
					numEnd = false
				)
	 		)
			else if _str[n] >= "0" and _str[n] <= "9" then
			(
				if numEnd then (
					messageBox "Missing comma in frame string"
					return 0
				) else (
					numStr += _str[n]	-- add digit to string
					-- format "numString = % \n" numStr
				)
				
			) else if ( _str[n] == " " ) then	-- spaces are ok, but end numbers
				if numStr.count > 0 then numEnd = true
				
			else if ( _str[n] as integer ) != 0 then
			(
				--format "char is % = %\n" _str[n] (_str[n] as integer)
				messageBox( "Illegal character in frame string = " + _str[n] )
				return 0
			)
				 
			n += 1 -- increment the string parse position
		)
		-- comma or end of string, convert last number
		if numStr.count > 0 then end = (numStr as integer) 
		
		
		if start != undefined and end != undefined then (
			-- sequence
			if start < end then
			(
				sequenceStart = start
				sequenceEnd = end
			) else (
				sequenceStart = end
				sequenceEnd = start
			)
			return n+1
	  	) 

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产做a爰片久久毛片| www.性欧美| 久久视频一区二区| 亚洲精品伦理在线| 日韩国产欧美一区二区三区| 在线电影一区二区三区| 日韩av电影免费观看高清完整版 | 天天影视网天天综合色在线播放| 欧美视频中文一区二区三区在线观看| 婷婷国产v国产偷v亚洲高清| 日韩一区二区三区四区| 国产一二三精品| 亚洲品质自拍视频网站| 欧美日韩一卡二卡三卡| 久久丁香综合五月国产三级网站 | 国产精品进线69影院| 日本精品免费观看高清观看| 午夜国产不卡在线观看视频| 日韩视频免费直播| 国产高清在线精品| 一区二区三区丝袜| 日韩色在线观看| 91豆麻精品91久久久久久| 国产又黄又大久久| 日本大胆欧美人术艺术动态| 日韩二区三区在线观看| 日韩精品一区二区三区视频播放| 欧美日韩高清不卡| 911精品国产一区二区在线| 欧美日韩中文国产| 欧美精品第一页| 337p粉嫩大胆噜噜噜噜噜91av| 国产精品1区二区.| 一区在线观看视频| 91精品国产综合久久小美女| 国产成人综合亚洲网站| 一区二区三区四区在线免费观看| 欧美电影免费观看高清完整版在线观看| 成人午夜精品一区二区三区| 亚洲福利视频三区| 国产偷国产偷精品高清尤物| 欧洲一区二区三区在线| 国产中文一区二区三区| 曰韩精品一区二区| 久久婷婷国产综合国色天香| 欧美中文字幕一区二区三区| 激情综合网av| 亚洲一区二区三区精品在线| 久久久久久日产精品| 欧美丝袜第三区| 懂色av中文一区二区三区| 日本强好片久久久久久aaa| 亚洲欧洲日韩一区二区三区| 日韩三级免费观看| 色综合久久久久| 国产精品中文欧美| 天堂成人免费av电影一区| 中文字幕一区三区| 亚洲精品在线观| 欧美美女直播网站| 99久久久免费精品国产一区二区| 毛片av中文字幕一区二区| 一个色在线综合| 亚洲国产精品v| 欧美成人video| 欧美日韩国产免费| 97久久精品人人做人人爽50路| 精品一区二区三区免费播放| 亚洲国产日韩a在线播放性色| 国产精品五月天| 精品国产露脸精彩对白| 欧美精品精品一区| 欧美综合一区二区三区| 成人福利视频网站| 国产揄拍国内精品对白| 美女诱惑一区二区| 亚洲午夜久久久久久久久久久| 国产精品久久夜| 久久久五月婷婷| 欧美一区二区三区视频在线观看| 亚洲日本一区二区| 欧美日韩黄色一区二区| 中文字幕中文乱码欧美一区二区| 蜜芽一区二区三区| 欧美午夜不卡在线观看免费| 中文字幕一区二区三区乱码在线| 国产麻豆精品95视频| 日韩视频免费观看高清完整版在线观看 | 国产精品一二一区| 日韩成人av影视| 亚洲午夜精品17c| 亚洲另类在线一区| 国产精品久久久久aaaa樱花| 国产丝袜欧美中文另类| 337p粉嫩大胆噜噜噜噜噜91av| 日韩精品专区在线| 日韩亚洲国产中文字幕欧美| 在线观看91精品国产麻豆| 欧美日高清视频| 欧美日韩色综合| 欧美日韩国产a| 91精品国产综合久久久久久| 欧美亚洲一区二区在线| 在线欧美一区二区| 欧美熟乱第一页| 欧美精品在线观看播放| 欧美另类久久久品| 91超碰这里只有精品国产| 制服.丝袜.亚洲.另类.中文| 91精品国产综合久久久久久久久久| 91精品麻豆日日躁夜夜躁| 欧美精品电影在线播放| 91精品国产一区二区人妖| 日韩免费一区二区| 精品国产伦一区二区三区观看方式| 精品久久人人做人人爰| 久久久美女艺术照精彩视频福利播放| 久久伊人蜜桃av一区二区| 久久免费美女视频| 国产精品天美传媒沈樵| 中文字幕在线不卡视频| 亚洲柠檬福利资源导航| 一区二区三区毛片| 午夜精品123| 另类的小说在线视频另类成人小视频在线 | 成人午夜在线视频| eeuss影院一区二区三区| 精品一区二区三区蜜桃| 亚洲乱码国产乱码精品精98午夜| www欧美成人18+| 一本一本大道香蕉久在线精品| 亚洲成在线观看| 久久蜜桃香蕉精品一区二区三区| 成人激情图片网| 日本美女一区二区三区视频| 国产人久久人人人人爽| 欧美午夜一区二区三区| 国产呦精品一区二区三区网站| 性久久久久久久久| 成人一道本在线| 色综合久久天天| 欧美日韩国产123区| 欧美α欧美αv大片| 国产日韩欧美a| 亚洲精品成人精品456| 图片区小说区国产精品视频| 另类人妖一区二区av| 成人综合在线网站| 欧美性高清videossexo| 欧美一二三区在线| 国产日韩欧美一区二区三区乱码| 亚洲欧洲综合另类在线| 日韩av电影免费观看高清完整版| 国产91丝袜在线播放| 国产一区啦啦啦在线观看| 亚洲444eee在线观看| 一区二区三区在线视频观看 | 狠狠色丁香久久婷婷综| 石原莉奈一区二区三区在线观看| 婷婷综合久久一区二区三区| 色妹子一区二区| 亚洲欧洲av一区二区三区久久| 久久国产精品区| 风间由美一区二区三区在线观看 | 99精品久久久久久| 国产老肥熟一区二区三区| 国产成a人亚洲精| 欧美成人伊人久久综合网| 国产精品免费人成网站| 在线观看91视频| 久久久国产午夜精品| 一区av在线播放| 国产成人精品影视| 欧美日精品一区视频| 久久精品男人天堂av| 亚洲国产精品久久久久秋霞影院 | 99精品在线观看视频| 欧美肥大bbwbbw高潮| 国产精品视频一二三区| 日本视频在线一区| 91在线精品一区二区三区| 日韩免费观看高清完整版| 日韩美女精品在线| 激情欧美日韩一区二区| 欧美伊人久久久久久久久影院| 久久亚洲捆绑美女| 爽好久久久欧美精品| 99久久精品免费看国产| 精品少妇一区二区三区在线播放| 一区二区三区在线播放| 成人激情午夜影院| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 日韩亚洲欧美成人一区| 亚洲摸摸操操av| 国产精品一区2区| 3atv一区二区三区| 一区二区三区欧美在线观看| 国产99久久久久| 日韩精品中文字幕一区| 亚洲一区二区在线免费看|