如何在 ThreeJS 中使用滚动渲染器?
How to have a scrolling renderer in ThreeJS?
我正在使用 OrtographicCamera
。
A canvas
在 HTML 中声明,我将其传递给 renderer
,如下所示:
var canvas = document.getElementById("canvas")
var width = canvas.clientWidth;
var height = canvas.clientHeight;
renderer = new THREE.WebGLRenderer({
antialias: true,
canvas: canvas
});
renderer.setClearColor(0xf0f0f0);
renderer.setPixelRatio(window.devicePixelRatio);
renderer.setSize(width, height);
问题是我添加到场景中的立方体正在被剪切。
场景正在增长,其高度大于可用视口的高度。
我想要滚动条,这样我就可以移动到 canvas 的底部,无需缩放即可查看所有立方体。
见截图:
HTML
<div id="container">
<canvas id="canvas"></canvas>
</div>
CSS
#canvas
{
width: 100%;
height: 100%;
}
非常感谢任何建议。
你有两件事正在进行。首先是 canvas 需要比客户端 window 大才能显示滚动条。确切的大小取决于您的需要,但请尝试将其从现在的大小加倍。
第二个问题是相机本身有左、右、上、下(以及近和远)平面,它们定义了相机视野内的区域。在设置相机时增加这些值,以获得 canvas 中可见的更多场景。如果您的宽度合适,您可能只能增加 top/bottom。
https://threejs.org/docs/api/cameras/OrthographicCamera.html
我使用了orbitcontrols并设法得到了我想要的东西,即能够看到场景中隐藏的物体。用户只需按向下箭头和向上箭头即可移动相机 down\up。
根本不需要 fiddle 和 canvas 元素。这很好,因为在 CSS 中控制 canvas 大小有点困难,而且当涉及滚动并将其附加到 ThreeJS 渲染器时更难。
我正在使用 OrtographicCamera
。
A canvas
在 HTML 中声明,我将其传递给 renderer
,如下所示:
var canvas = document.getElementById("canvas")
var width = canvas.clientWidth;
var height = canvas.clientHeight;
renderer = new THREE.WebGLRenderer({
antialias: true,
canvas: canvas
});
renderer.setClearColor(0xf0f0f0);
renderer.setPixelRatio(window.devicePixelRatio);
renderer.setSize(width, height);
问题是我添加到场景中的立方体正在被剪切。
场景正在增长,其高度大于可用视口的高度。
我想要滚动条,这样我就可以移动到 canvas 的底部,无需缩放即可查看所有立方体。
见截图:
HTML
<div id="container">
<canvas id="canvas"></canvas>
</div>
CSS
#canvas
{
width: 100%;
height: 100%;
}
非常感谢任何建议。
你有两件事正在进行。首先是 canvas 需要比客户端 window 大才能显示滚动条。确切的大小取决于您的需要,但请尝试将其从现在的大小加倍。
第二个问题是相机本身有左、右、上、下(以及近和远)平面,它们定义了相机视野内的区域。在设置相机时增加这些值,以获得 canvas 中可见的更多场景。如果您的宽度合适,您可能只能增加 top/bottom。
https://threejs.org/docs/api/cameras/OrthographicCamera.html
我使用了orbitcontrols并设法得到了我想要的东西,即能够看到场景中隐藏的物体。用户只需按向下箭头和向上箭头即可移动相机 down\up。
根本不需要 fiddle 和 canvas 元素。这很好,因为在 CSS 中控制 canvas 大小有点困难,而且当涉及滚动并将其附加到 ThreeJS 渲染器时更难。