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

📄 ck_orbitcameracontroller.ms

📁 3dmax导出3d模型二次开发插件
💻 MS
字号:
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
-- Register OrbitCameraController Instruction
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
global instOrbitCameraControllerStr = "Orbit Camera Controller"
global instOrbitCameraControllerRollout
global instOrbitCameraControllerFct

--------------------------------------------------------
-- Rollout Fonction
--------------------------------------------------------
rollout instOrbitCameraControllerRollout "Orbit Camera Controller Options" width:408 height:114
(
	label info_Label "Info: Controls the camera with the mouse. Click+Move = orbit the camera around a 3d position. Mouse Wheel Up/Down = Zoom In/Zoom Out." pos:[8,8] width:250 height:64
	spinner speedfactor_Spin "" pos:[332,54] width:50 height:16 range:[0,1000,1] type:#float scale:0.1
	spinner zoomattenuation_Spin "" pos:[332,78] width:50 height:16 range:[0,100,15] type:#float scale:0.5
	spinner X_Spin "" pos:[24,78] width:50 height:16 range:[-10000,10000,0] type:#float scale:0.1 enabled:false
	spinner Y_Spin "" pos:[96,78] width:50 height:16 range:[-10000,10000,0] type:#float scale:0.1 enabled:false
	spinner Z_Spin "" pos:[168,78] width:50 height:16 range:[-10000,10000,0] type:#float scale:0.1 enabled:false
	GroupBox limited_Group "    " pos:[6,60] width:220 height:40
	checkbox spec3dpos_Check "Orbit Around Special 3D Pos" pos:[20,56] width:158 height:16 checked:false
	label speedfactor_Label "Speed Factor:" pos:[258,54] width:70 height:16
	label zoomattenuation_Label "Zoom Attenuation:" pos:[238,78] width:92 height:16
	label X_Label "X:" pos:[12,78] width:12 height:16 enabled:false
	label Y_Label "Y:" pos:[84,78] width:12 height:16 enabled:false
	label Z_Label "Z:" pos:[156,78] width:12 height:16 enabled:false

	include "CKInstScripts\\ApplyPreviewButtons.ms"
	
	on spec3dpos_Check changed arg do (
		X_Spin.enabled = Y_Spin.enabled = Z_Spin.enabled = X_Label.enabled = Y_Label.enabled = Z_Label.enabled = arg
	)

	--------------------------------------------------------
	-- Update Rollout From Chunk
	--------------------------------------------------------
	fn UpdateFromChunk = (
		currentChunkBuf = GetCKChunk selection[1] instOrbitCameraControllerStr
		
		-- Speed Factor
		local speed = ReadCKBufValueAsVector "CamOrbit Speed Factor"
		speedfactor_Spin.value = speed.y / 0.003

		-- Zoom Attenuation
		zoomattenuation_Spin.value = ReadCKBufValueAsNumber "CamOrbit Zoom Attenuation"
		
		-- Center To Look At
		useGeomCenter = ReadCKBufValue "CamOrbit Use Geom Center"
		if (useGeomCenter==undefined) then (
			spec3dpos_Check.checked = true
			local ctla = ReadCKBufValueAsVector "Center To Look At"
			X_Spin.value = ctla.x
			Y_Spin.value = ctla.z
			Z_Spin.value = ctla.y
		) else (
			spec3dpos_Check.checked = false
		)

		X_Spin.enabled = Y_Spin.enabled = Z_Spin.enabled = X_Label.enabled = Y_Label.enabled = Z_Label.enabled = spec3dpos_Check.checked
	)
	
)


--------------------------------------------------------
-- Apply Instruction
--------------------------------------------------------
fn instOrbitCameraControllerFct = (

	-- Attach Script 
	chunkData = "  " + CKAttacheScriptOnThisStr + "(\"Camera Orbit\")"
	chunkdata += "\x0d\x0a"

	-- Speed Factor
	speedfactor = instOrbitCameraControllerRollout.speedfactor_Spin.value
	local speed = [-speedfactor*0.0035, 0, speedfactor*0.003]
	chunkData += "  " + CKSetParamOnThisStr + "(\"CamOrbit Speed Factor\", \"" + (posAsVirtools speed) + "\" )"
	chunkdata += "\x0d\x0a"

	-- Zoom Attenuation
	zoomattenuation = instOrbitCameraControllerRollout.zoomattenuation_Spin.value
	chunkData += "  " + CKSetParamOnThisStr + "(\"CamOrbit Zoom Attenuation\", \"" + (zoomattenuation as string) + "\" )"
	chunkdata += "\x0d\x0a"


	-- Center To Look At
	local ctla = geometry.center
	if instOrbitCameraControllerRollout.spec3dpos_Check.checked then (
		ctla.x = instOrbitCameraControllerRollout.X_Spin.value
		ctla.y = instOrbitCameraControllerRollout.Y_Spin.value
		ctla.z = instOrbitCameraControllerRollout.Z_Spin.value
	) else (
		chunkData += "  " + CKSetParamOnThisStr + "(\"CamOrbit Use Geom Center\", \"0\" )"
		chunkdata += "\x0d\x0a"
	)

	chunkData += "  " + CKSetParamOnThisStr + "(\"Center To Look At\", \"" + (posAsVirtools ctla) + "\" )"
	chunkdata += "\x0d\x0a"
	

	for obj in selection do (
		if( (superclassof obj)==camera ) do (
			AddCKChunk obj instOrbitCameraControllerStr chunkData
			updateInstructionsList()
		)
	)
)

registerInstruction instOrbitCameraControllerStr instOrbitCameraControllerFct instRollout:instOrbitCameraControllerRollout


⌨️ 快捷键说明

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