如何解决为什么不能将透视相机配置为具有三个js的实际尺寸?
我正在使用Three Js来可视化汽车,但是我的透视相机有问题
我希望它看起来更真实:我只希望看到正面,而不是背面。我很清楚?哈哈
我已经尝试更改很多properties,但是我却做不到。
解决方法
我可以在您的代码中看到您正在使用鼠标滚轮更改FOV ...
这是你想做的吗?
我希望您可以更改相机的z位置以进行缩放,而不是FOV。
我建议您喜欢jscastro在评论中所说的内容,并将相机设置为45度,然后将相机移近一些,并使滚动事件更改相机位置,而不是更改视角。
这是一个演示,您可以在其中更改相机的前移和后移位置,以了解它们如何相互作用。
var camera,scene,renderer,mesh,material,stats;
init();
animate();
function init() {
// Renderer.
renderer = new THREE.WebGLRenderer();
//renderer.setPixelRatio(window.devicePixelRatio);
renderer.setSize(window.innerWidth,window.innerHeight);
// Add renderer to page
document.body.appendChild(renderer.domElement);
// Create camera.
camera = new THREE.PerspectiveCamera(70,window.innerWidth / window.innerHeight,1,10000);
camera.position.z = 400;
// Create scene.
scene = new THREE.Scene();
// Create material
material = new THREE.MeshPhongMaterial();
// Create cube and add to scene.
var geometry = new THREE.BoxGeometry(200,200,200);
mesh = new THREE.Mesh(geometry,material);
scene.add(mesh);
// Create ambient light and add to scene.
var light = new THREE.AmbientLight(0x404040); // soft white light
scene.add(light);
// Create directional light and add to scene.
var directionalLight = new THREE.DirectionalLight(0xffffff);
directionalLight.position.set(1,1);
scene.add(directionalLight);
// Add listener for window resize.
window.addEventListener('resize',onWindowResize,false);
// Add dat.gui.
var gui = new dat.GUI();
var fovgui = gui.add(camera,"fov").onChange(function(newvalue){
camera.updateProjectionMatrix();
}).name('camera.fov');
var posgui = gui.add(camera.position,"z").name('camera.position.z');
gui.add({click: function(){
camera.fov = 5;
camera.position.z = 5000;
camera.updateProjectionMatrix();
fovgui.updateDisplay();
posgui.updateDisplay();
}},'click').name('FOV:5 Z:5000');
gui.add({click: function(){
camera.fov = 70;
camera.position.z = 400;
camera.updateProjectionMatrix();
fovgui.updateDisplay();
posgui.updateDisplay();
}},'click').name('FOV:70 Z:400');
gui.add({click: function(){
camera.fov = 130;
camera.position.z = 190;
camera.updateProjectionMatrix();
fovgui.updateDisplay();
posgui.updateDisplay();
}},'click').name('FOV:130 Z:190');
}
function animate() {
requestAnimationFrame(animate);
mesh.rotation.x += 0.005;
mesh.rotation.y += 0.01;
renderer.render(scene,camera);
}
function onWindowResize() {
camera.aspect = window.innerWidth / window.innerHeight;
camera.updateProjectionMatrix();
renderer.setSize(window.innerWidth,window.innerHeight);
}
body {
padding: 0;
margin: 0;
}
canvas {
display: block;
}
<script src="https://cdn.rawgit.com/dataarts/dat.gui/master/build/dat.gui.min.js"></script>
<link href="https://cdn.rawgit.com/dataarts/dat.gui/master/build/dat.gui.css" rel="stylesheet"/>
<script src="https://cdn.rawgit.com/mrdoob/three.js/master/build/three.min.js"></script>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。