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

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

?? macro_baketextures.mcr

?? 3dmax導出3d模型二次開發插件
?? MCR
?? 第 1 頁 / 共 5 頁
字號:
		if end != undefined then (
	 		-- single
			sequenceStart = sequenceEnd = end
			return n+1
		) else	 
			return 0	-- done
	
) -- end, parse frame string
	

-- this call sorts out the rendTimeType and returns a sequence
-- get a (perhaps one of many) frame sequence, return 0 if done or strPos for next call. init strPos at 1
fn getSequence _strPos =
(
	sequenceStart = sequenceEnd = 0
	case rendTimeType of
	(
	1: 	( -- single
			sequenceStart = sequenceEnd = currentTime
		)
	2:	( -- active animation segment
			sequenceStart = animationRange.start
			sequenceEnd = animationRange.end
		)
	3:	( -- from...to frame
			sequenceStart = rendStart
			sequenceEnd = rendEnd
		)
	4:	( -- string of frames, parse off next sequence
			return parseFrameString rendPickupFrames _strPos
		)
	) -- end, case of rendTimeType
	
	-- convert to frame #
	if classof( sequenceStart ) == time then 
		sequenceStart = (sequenceStart as integer) / ticksPerFrame
	if classof( sequenceEnd ) == time then 
		sequenceEnd = (sequenceEnd as integer) / ticksPerFrame

	return if _strPos > 1 then 0 else 2	-- one shot only except pickups
)

-- utility to get total frames in the bake, so sum over all sequences
fn getTotalFrames =
(
	n = 0
	p = 1
	while (p = getSequence( p )) != 0 do
	(
		--format "start = %, end = %,  strPos = %\n" sequenceStart sequenceEnd p
		n += sequenceEnd - sequenceStart + 1
	)
	return n
)

-------------- function to skip objects w/ map conflicts
fn skipObject _obj =
(
	if _obj.nDilations < 0 then
	(
		n = if( _obj.nDilations==-100 ) then 0 else -_obj.nDilations
		_obj.nDilations = n
		return true
	)
	return false
)

------------------------------------------------------------------
--
--	Function to bake a set of textures on each of a set of objects
--
function batchBake _ObjectList = 
(
	--format	"bake % objects \n"  _ObjectList.count
	
	-- select the settings to use
	renderer = if (commonBakeProps.rDraftOrProduction.state == 1) then #production else #draft
	
    -- commit the render scene dialog if it's still up		
	renderSceneDialog.commit()
	
--	disableSceneRedraw()
	with redraw off (

	
	 numFrames = getTotalFrames()
		
	-- create the bake progress dialog
	 progressScale = 100 / ((_ObjectList.count) * numFrames + 1)
	-- progressStart "Baking Textures..."

	rollout bakeProgress "Progress..." width:183 height:48
	(
		label lbl1 "Baking Textures..." pos:[48,6] width:94 height:21
		progressBar pb1 "" pos:[5,22] width:174 height:17
	)
	-- & put it up
	createdialog bakeProgress  	-- style:#(#style_border,#style_toolwindow)
	bakeProgress.pb1.value = 0 
	
	-- find the frame to update
	updateFrameNum = (currentTime as integer)/ticksPerFrame

	-- bake each object in turn
	for i = 1 to _ObjectList.count do
	(
		obj = _ObjectList[i];
		
		if (obj.effectiveEnable() == false ) or ( objectIsBakable( obj )==false ) or skipObject( obj ) then
				continue
		
		local restoreToGroup = false
		if isGroupMember( obj ) then
		(
			setGroupMember( obj )( false )		
			restoreToGroup = true
		)
		--  select the object
		select( obj )

		-- bake the object
		 w = obj.renderWidth()
		 h = obj.renderHeight()
		--format "    bake object % to % x % \n" (obj.name) w h
		
		if w == 0 or h == 0 then
			continue
			
		if (curBM == undefined) or (curBM.width != w ) or (curBM.height != h) then
		(	
			-- create new bm
		-- do we need to delete this ???? crashes! 
	--		if curBM != undefined then 	delete curBM
			if curBM != undefined then 
				unDisplay( curBM )

			curBM = bitmap( w )( h )
		)
		
		vfbOn = if commonBakeProps.cDisplayFB.checked then true else false
		
		-- force render to use original material for baking
		local saveRenderMtlIndex = -1
		materialType = (classof obj.material as string)
		if (materialType == "Shell_Material") then
		(
			saveRenderMtlIndex = obj.material.renderMtlIndex
			obj.material.renderMtlIndex = 0
		)

		-- for each sequence of frames
		p = 1
		while (p = getSequence( p )) != 0 do
		(
			-- for each frame of the sequence.....
			--format "	render frames: % to %\n" sequenceStart sequenceEnd
			nFrame = sequenceStart 
			while( nFrame <= sequenceEnd) do
			(	
				-- update the bitmap names
				n = if (rendTimeType == 2) or (rendTimeType == 3) then 
						(nFrame - sequenceStart + rendFileNumberBase) 
					else nFrame
				updateBitmapFilenames( obj )( n )
			
				-- update the progress bar
				bakeProgress.pb1.value = progressScale * ( ((i-1) * numFrames) + ((nFrame+1) as float) )
			
				-- check if the files already exist
				if not checkFileOverwrite( obj ) then
				(
					-- don't overwrite files, boot
					--format "can't overwrite files\n"
					destroydialog bakeProgress 
					-- progressEnd()

					select( selectedObjects )  	-- reselect
					enableSceneRedraw()
					return 0	-- cancel
				)
			
				-- render the texture elements
				--format "render frame % \n" nFrame
				wasCanceled = false
				render rendertype:#bakeSelected frame:nFrame to:curBM vfb:vfbOn cancelled:&wasCanceled
			
				-- check for cancel, check files & other progress bars
				--if ( not filesWritten( obj )) then
				--format "canceled rendering = % \n" wasCanceled
				if (  wasCanceled ) then
				(
					format "canceled rendering\n"
					destroydialog bakeProgress 
					-- progressEnd()

					select( selectedObjects )  	-- reselect
					enableSceneRedraw()
					return 0	-- cancel
				)
				
				-- check if this is the frame we want to update to
				if( nFrame == updateFrameNum ) then
				(
					--format "collect files for frame = %\n" nFrame
					collectUpdateFiles( obj )
				)
				
				nFrame += rendNthFrame	-- update to next frame
			
			) -- end, for each frame
		) -- end, for each sequence
		
		-- prepare baked materials?
		if ( commonBakeProps.cShellMaterials.checked ) then
		(
			applyUpdateFiles( obj )
			updateMaterial( obj )
		) -- end, shell materials enabled

		-- restore object to the group
		if	restoreToGroup then
			setGroupMember( obj )( true )		
			
		if saveRenderMtlIndex >= 0 then
			obj.material.renderMtlIndex = saveRenderMtlIndex 

		-- flag that we can do a redo of the last render
		gTextureBakeDialog.bUpdateLast.enabled = true
		
		format "end, bake object\n"

	) -- end, for each object
	
	-- toss the progress dialog
	destroydialog( bakeProgress )
	-- progressEnd()
	
	-- reselect
	select( selectedObjects )
	
	) -- end, with redraw off
	
	--enableSceneRedraw()
	redrawViews()

) -- end, function batch bake




------------------------------------------------------------------
--
--	Main Texture Baking Shell Rollout
--
rollout gTextureBakeDialog "Render To Textures" 
	width:350 height:485
(
		-- sub rollout for selected object porperties
		SubRollout rollouts "" 
			pos:[1,2] width:342 height:483
		
		-- the "do it" buttons
		button bRender "Render" 
			pos:[7,493] width:66 height:24
			enabled:true
		button bUpdateLast "Update Last" 
			pos:[80,493] width:66 height:24 
			enabled:false
		button bClose "Close" 
			pos:[227,493] width:50 height:24 
			enabled:true
		button bCancel"Cancel" 
			pos:[284,493] width:50 height:24
			enabled:true
			
			------------------------------------------------------------------
			--
			--	function to update things when the max selection changes
			--
			function onChangeSelection =
			(
				-- filter out reselecting the same thing
				if selection != selectedObjects then
				(
					-- format "update selection changed old = % to new = %\n" selectedObjects selection
					-- close out & write previously selected object
					selectedObjectProps.CloseSelectedObject()
					-- & select new one
					selectedObjectProps.UpdateObjectSelection()
				) -- end, selection is different
			)
			
			-----------------------------------------------------------------------------
			--
			-- this function handles reset & new event callbacks
			--
			function onReset =
			(
				if curBM != undefined then
					unDisplay( curBM )
						
				-- remove the selectionSetChange callback
				callbacks.removeScripts id:#bakeSelectionHandler 
				callbacks.removeScripts id:#bakeResetHandler 
				callbacks.removeScripts id:#bakeNewHandler 
				-- callbacks.removeScripts id:#bakeFileOpenHandler  
			
				-- & close the dialog if it's not already
				destroydialog( gTextureBakeDialog )
			)

			function onFileOpen =
			(
				--format "newFileLoaded == true \n"
				newFileLoaded = true
				bUpdateLast.enabled = false
			)


		-------------------------------------------------------------
		--	
		--	Bake Texture Button Pressed
		--	
		on bRender pressed do
			(
				selectedObjectProps.closeSelectedObject()  -- capture changes
				selectedObjectProps.UpdateObjectSelection() -- reselect things

				-- bake selected
				if (commonBakeProps.rSceneType.state) == 1 then 
					ObjList = selection as array
				-- bake all
				else if (commonBakeProps.rSceneType.state) == 2 then 
					ObjList = geometry as array

				-- make a directory if it doesn't already exist
				validateDirectory( commonBakeProps.GetFilePath() )
				
				-- remove old shell materials 
				-- this is a hack to get around a bug in vp materials on load: 456913, 454464
				if newFileLoaded == true or initialRender == true then
				(
					--format "remove bake materials, newFile = % \n" newFileLoaded 
					removeBakeMaterials()
				)
					
				-- flatten everybody
				allowSelectionUpdates = false
				batchFlatten( ObjList )
				
				-- then bake the textures
				batchBake( ObjList )

				newFileLoaded = false	-- reset the new file switch
				initialRender = false
				allowSelectionUpdates = true
					
			)
			
		-------------------------------------------------------------
		--	
		--	Update Last Bake Texture 
		--	uses the previous selection
		--	
		on bUpdateLast pressed do
		(
			if bUpdateLast.enabled then
			(
				allowSelectionUpdates = false
				batchFlatten( ObjList )
				
				-- then bake the textures
				batchBake( ObjList )

				allowSelectionUpdates= true
			)
		)

		on gTextureBakeDialog open do
		(
			isCancel = false
			toolMode.commandMode = #SELECT
		)

		-------------------------------------------------------------
		--	
		--	dialog is being closed. only hook for X Button pressed 
		--
		on gTextureBakeDialog close do
		(
			-- format "close dlg\n"
			if isCancel == false then
			(
				-- format "    save open object \n"
				-- save things to the selected object
				selectedObjectProps.CloseSelectedObject()
			)
			-- close any vfbs
			if curBM != undefined then 
				unDisplay( curBM )

			-- remove the selectionSetChange callback
			callbacks.removeScripts id:#bakeSelectionHandler 
			callbacks.removeScripts id:#bakeResetHandler 
			callbacks.removeScripts id:#bakeNewHandler 
			--callbacks.removeScripts id:#bakeFileOpenHandler  

			pDialogPos = GetDialogPos( gTextureBakeDialog )
			--format "dialog pos = ( %, %) \n" pDialogPos.x pDialogPos.y
--			pCommonRolledUp = not commonBakeProps.open
--			pSelectedRolledUp = not selectedObjectProps.open
--			if uniqueElementProps != undefined then
--				pUniqueRolledUp = not uniqueElementProps.open
--			else 
				pUniqueRolledUp = false
			-- format "update rollup states: common = %, selected = % \n" pCommonRolledUp pSelectedRolledUp 
			-- & close the dialog if it's not already
			destroydialog gTextureBakeDialog
		)
		
		-------------------------------------------------------------
		--	

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美精品一区二区三区四区| 国产麻豆一精品一av一免费| 一本到不卡精品视频在线观看| 国产精品伦理一区二区| 成人a免费在线看| 中文字幕一区二区三区不卡在线 | 极品少妇xxxx偷拍精品少妇| 精品国内二区三区| 国产成人8x视频一区二区| 亚洲国产电影在线观看| 91网址在线看| 日韩制服丝袜av| 日韩精品一区二区在线观看| 国内精品在线播放| 国产欧美一区二区三区鸳鸯浴| 国产成人精品免费一区二区| 国产精品私人自拍| 99视频精品在线| 一区二区三区四区不卡视频| 欧美亚洲综合色| 日韩电影网1区2区| 精品国产在天天线2019| 国产麻豆精品在线观看| 欧美激情综合在线| 国产又黄又大久久| 久久午夜老司机| 一本大道久久a久久精二百| 性做久久久久久免费观看欧美| 欧美剧情片在线观看| 麻豆精品久久久| 国产免费观看久久| 91九色最新地址| 免费高清在线视频一区·| 国产亚洲综合在线| 91免费在线播放| 秋霞午夜av一区二区三区| 精品处破学生在线二十三| 国产**成人网毛片九色| 一区二区三区小说| 91精品一区二区三区在线观看| 国产精品资源网| 亚洲综合一二三区| 日韩一级免费观看| 91在线免费播放| 日本视频在线一区| 国产精品成人网| 欧美一个色资源| 91老司机福利 在线| 男女激情视频一区| 亚洲视频每日更新| 欧美白人最猛性xxxxx69交| 成人av电影观看| 美女视频免费一区| 亚洲欧美国产77777| 久久免费看少妇高潮| 99精品热视频| 精品一区二区免费| 午夜精品久久久久久久| 国产精品午夜在线观看| 色94色欧美sute亚洲线路一ni| 国模大尺度一区二区三区| 亚洲综合区在线| 亚洲va国产天堂va久久en| 国产精品久久久久一区二区三区| 欧美tk—视频vk| 欧美日本一区二区三区四区| 成人av动漫网站| 国产中文字幕精品| 日本欧美肥老太交大片| 国产视频911| 91精品国产乱码| 日本乱人伦aⅴ精品| 国产91精品在线观看| 日韩激情av在线| 一区二区视频在线| 国产精品嫩草影院av蜜臀| 久久在线观看免费| 欧美一级生活片| 欧美日韩国产精选| 欧美色国产精品| 在线一区二区观看| 91美女在线视频| eeuss鲁一区二区三区| 国产一区二区三区国产| 久久精品国产免费| 精品一区二区三区免费播放| 久久精品久久综合| 麻豆国产欧美一区二区三区| 视频一区二区欧美| 日韩高清不卡一区二区三区| 亚洲主播在线播放| 一区二区国产盗摄色噜噜| 国产欧美精品日韩区二区麻豆天美| 欧美日韩精品一区二区三区蜜桃| 97久久人人超碰| 欧美日韩一区 二区 三区 久久精品| 91免费看`日韩一区二区| 99久久精品国产一区| av亚洲精华国产精华| a在线欧美一区| 99久久精品情趣| 欧美天天综合网| 欧美精品18+| 久久婷婷国产综合国色天香 | 日韩片之四级片| 欧美在线你懂得| 99精品久久久久久| 亚洲综合无码一区二区| 亚洲一线二线三线视频| 一区二区在线观看视频在线观看| 亚洲在线观看免费视频| 午夜精品在线看| 精品中文字幕一区二区小辣椒| 韩国精品一区二区| va亚洲va日韩不卡在线观看| 在线看不卡av| 日韩一区二区三区精品视频| 精品欧美乱码久久久久久 | 日本成人超碰在线观看| 精品制服美女久久| 从欧美一区二区三区| 一本到一区二区三区| 日韩国产在线一| 成人激情av网| 在线观看免费亚洲| 日韩欧美一级特黄在线播放| 一区二区三区在线不卡| 天天综合色天天综合色h| 久久99国产精品免费网站| 成人黄色在线视频| 欧美三级午夜理伦三级中视频| 欧美日韩久久一区二区| 精品少妇一区二区三区 | 国产日产欧产精品推荐色| 中文字幕一区二区三区四区| 午夜精品国产更新| 国产成人精品一区二区三区网站观看| 91视频观看免费| 欧美成人a∨高清免费观看| 国产精品拍天天在线| 亚洲18色成人| 成人av在线电影| 欧美一卡在线观看| 欧美极品美女视频| 琪琪一区二区三区| 99re热这里只有精品免费视频| 日韩欧美国产电影| 亚洲精品乱码久久久久久久久 | 免费在线观看精品| 一道本成人在线| 国产婷婷一区二区| 日韩精品免费专区| 国产毛片一区二区| 91久久香蕉国产日韩欧美9色| 在线观看91精品国产入口| 精品sm捆绑视频| 亚洲欧美国产三级| 成人激情黄色小说| 26uuu色噜噜精品一区二区| 亚洲成va人在线观看| 91精品国产综合久久香蕉的特点 | 黄色日韩三级电影| 欧美日韩一二区| 亚洲私人黄色宅男| 国产一区二区视频在线| 911国产精品| 亚洲午夜免费福利视频| 9i看片成人免费高清| 日韩欧美一区二区久久婷婷| 亚洲图片欧美视频| 国产在线精品一区二区夜色| 国产成人av自拍| 日韩一区二区三免费高清| 亚洲一级电影视频| 国产一区二区在线视频| 欧美日韩综合在线| 亚洲免费伊人电影| 国产成人av电影免费在线观看| 色av成人天堂桃色av| 国产日韩欧美精品在线| 婷婷久久综合九色综合伊人色| 欧美精品免费视频| 水蜜桃久久夜色精品一区的特点| 欧洲国产伦久久久久久久| 一区二区三区四区亚洲| 91蝌蚪porny九色| 亚洲欧美另类在线| 懂色av一区二区三区免费看| 国产人久久人人人人爽| gogo大胆日本视频一区| 亚洲色图清纯唯美| 91首页免费视频| 国产麻豆视频精品| 久久这里只有精品首页| 精品一区在线看| 欧美日韩免费电影| 亚洲男人电影天堂| 欧美日韩一级大片网址| 美女视频免费一区| 精品国产自在久精品国产|