cameraClipDistance:PD.Numeric(0,{min:0.0,max:50.0,step:0.1},{description:'The distance between camera and scene at which to clip regardless of near clipping plane.'}),
clip:PD.Interval([1,100],{min:1,max:100,step:1}),
fog:PD.Interval([50,100],{min:1,max:100,step:1}),
pickingAlphaThreshold:PD.Numeric(0.5,{min:0.0,max:1.0,step:0.01},{description:'The minimum opacity value needed for an object to be pickable.'}),
...
...
@@ -161,13 +162,24 @@ namespace Canvas3D {
constnearFactor=(50-p.clip[0])/50
constfarFactor=-(50-p.clip[1])/50
constnear=cDist-(bRadius*nearFactor)
constfar=cDist+(bRadius*farFactor)
letnear=cDist-(bRadius*nearFactor)
letfar=cDist+(bRadius*farFactor)
constfogNearFactor=(50-p.fog[0])/50
constfogFarFactor=-(50-p.fog[1])/50
constfogNear=cDist-(bRadius*fogNearFactor)
constfogFar=cDist+(bRadius*fogFarFactor)
letfogNear=cDist-(bRadius*fogNearFactor)
letfogFar=cDist+(bRadius*fogFarFactor)
if (camera.state.mode==='perspective'){
near=Math.max(0.1,p.cameraClipDistance,near)
far=Math.max(1,far)
fogNear=Math.max(0.1,fogNear)
fogFar=Math.max(1,fogFar)
}elseif (camera.state.mode==='orthographic'){
if (p.cameraClipDistance>0){
near=Math.max(p.cameraClipDistance,near)
}
}
if (near!==currentNear||far!==currentFar||fogNear!==currentFogNear||fogFar!==currentFogFar){
camera.setState({near,far,fogNear,fogFar})
...
...
@@ -371,6 +383,7 @@ namespace Canvas3D {
renderer.setClearColor(props.backgroundColor)
}
if (props.cameraClipDistance!==undefined)p.cameraClipDistance=props.cameraClipDistance
if (props.clip!==undefined)p.clip=[props.clip[0],props.clip[1]]
if (props.fog!==undefined)p.fog=[props.fog[0],props.fog[1]]