Skip to content
Snippets Groups Projects
Commit 331db15b authored by Alexander Rose's avatar Alexander Rose
Browse files

added cameraClipDistance to canvas3d

parent c19d28e3
No related branches found
No related tags found
No related merge requests found
......@@ -34,6 +34,7 @@ export const Canvas3DParams = {
// maxFps: PD.Numeric(30),
cameraMode: PD.Select('perspective', [['perspective', 'Perspective'], ['orthographic', 'Orthographic']]),
backgroundColor: PD.Color(Color(0x000000)),
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 {
const nearFactor = (50 - p.clip[0]) / 50
const farFactor = -(50 - p.clip[1]) / 50
const near = cDist - (bRadius * nearFactor)
const far = cDist + (bRadius * farFactor)
let near = cDist - (bRadius * nearFactor)
let far = cDist + (bRadius * farFactor)
const fogNearFactor = (50 - p.fog[0]) / 50
const fogFarFactor = -(50 - p.fog[1]) / 50
const fogNear = cDist - (bRadius * fogNearFactor)
const fogFar = cDist + (bRadius * fogFarFactor)
let fogNear = cDist - (bRadius * fogNearFactor)
let fogFar = 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)
} else if (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]]
......@@ -386,6 +399,7 @@ namespace Canvas3D {
return {
cameraMode: camera.state.mode,
backgroundColor: renderer.props.clearColor,
cameraClipDistance: p.cameraClipDistance,
clip: p.clip,
fog: p.fog,
pickingAlphaThreshold: renderer.props.pickingAlphaThreshold,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment