javascript - 如何在three.js中垂直定位相机
问题描述
我有一个从屏幕中心开始的模型,但我想从底部开始显示它。我试图改变perspectiveCamera,最大和最小距离以及场景比例,但到目前为止我无法弄清楚。这是代码
// renderer
renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
// renderer.outputEncoding = THREE.sRGBEncoding;
// scene
scene = new THREE.Scene();
// camera
camera = new THREE.PerspectiveCamera(40, window.innerWidth / window.innerHeight, 1, 1000);
camera.position.set(0, 0, 40);
scene.add(camera);
// controls
var controls = new OrbitControls(camera, renderer.domElement);
controls.addEventListener('change', render);
controls.minDistance = 10;
controls.maxDistance = 95;
controls.enablePan = true;
// ambient
scene.add(new THREE.AmbientLight(0xffffff, .2));
// light
var light = new THREE.PointLight(0xffffff, 1.5);
camera.add(light);
new GLTFLoader().load('models/female.glb', function (gltf) {
gltf.scene.traverse(function (child) {
if (child.isMesh) {
child.material.normalMapType = THREE.ObjectSpaceNormalMap;
child.material.side = THREE.DoubleSide;
child.visible = true
}
});
gltf.scene.scale.set(4, 4, 4)
scene.add(gltf.scene);
render();
});
模型看起来像这样
解决方案
通过在您的 y 中放置一些合适的数字,将相机向上移动:
camera.position.set(0, 0, 40)
此外,轨道控制可能有一种方法来设置目标对象。
推荐阅读
- android - 获取其他应用程序的外部文件/数据目录
- android - 为不同的 API 级别实现多个方法,而不是 if else 来决定调用哪一个
- python - 在python df中为变量分配一个运行编号
- c# - 如何使用mongo数据库同时打开多个连接
- java - 是否有一个 java8 标准库类表示“可能有异常”,就像 java.util.Optional 表示“可能为空”一样?
- angular - 如何通过注册组件与自定义工具面板进行通信
- azure - 如何保护 Azure 中静态 IP 地址上的原始 UDP 侦听器
- html - 如何在 reactjs 中的导航栏中添加后退按钮
- python - 减小输入时的空间复杂度
- php - 我对用户照片有疑问尝试获取非对象的属性“头像”