📄 ck_orbitcameracontroller.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 + -