three.js 初始化物体靠近相机
three.js init with object close to camera
在我的 three.js 项目中,我使用这样的场景和相机:
var container = document.getElementById('container');
renderer = new THREE.WebGLRenderer({ antialias: true });
renderer.setPixelRatio(window.devicePixelRatio);
renderer.setSize(window.innerWidth, window.innerHeight);
renderer.setAnimationLoop(render);
renderer.outputEncoding = THREE.sRGBEncoding;
renderer.toneMapping = THREE.ACESFilmicToneMapping;
renderer.toneMappingExposure = 1.25;
container.appendChild(renderer.domElement);
window.addEventListener('resize', onWindowResize, false);
stats = new Stats();
container.appendChild(stats.dom);
//
camera = new THREE.PerspectiveCamera(40, window.innerWidth / window.innerHeight, 0.1, 100);
camera.position.set(3.5, 2, - 2.5);
controls = new OrbitControls(camera, container);
controls.target.set(0, 0.5, 0);
controls.update();
scene = new THREE.Scene();
scene.background = new THREE.Color(0xeeeeee);
scene.environment = new RoomEnvironment(renderer);
scene.fog = new THREE.Fog(0xeeeeee, 10, 50);
...
好吧,我的场景是这样开始的:
我想开始加倍我的对象,像这样:
我试试:
camera.zoom.set(2);
但什么也没发生
所以我尝试定义一个 vector3 (2,2,2) 并缩放我的对象:
myobj.scale.set(myVector3);
没有。
有人可以帮助我开始我的对象更大的场景吗?
非常感谢
如果你这样做:
camera.zoom.set(2);
您必须确保像这样更新项目矩阵:
camera.updateProjectionMatrix();
关于另一个问题,Vector3.set()
只接受三个标量作为参数。您不能将方法与 Vector3
类型的单个参数一起使用。所以你可以这样做:
myobj.scale.set(myVector3.x, myVector3.y, myVector3.z);
甚至更好:
myobj.scale.copy(myVector3);
在我的 three.js 项目中,我使用这样的场景和相机:
var container = document.getElementById('container');
renderer = new THREE.WebGLRenderer({ antialias: true });
renderer.setPixelRatio(window.devicePixelRatio);
renderer.setSize(window.innerWidth, window.innerHeight);
renderer.setAnimationLoop(render);
renderer.outputEncoding = THREE.sRGBEncoding;
renderer.toneMapping = THREE.ACESFilmicToneMapping;
renderer.toneMappingExposure = 1.25;
container.appendChild(renderer.domElement);
window.addEventListener('resize', onWindowResize, false);
stats = new Stats();
container.appendChild(stats.dom);
//
camera = new THREE.PerspectiveCamera(40, window.innerWidth / window.innerHeight, 0.1, 100);
camera.position.set(3.5, 2, - 2.5);
controls = new OrbitControls(camera, container);
controls.target.set(0, 0.5, 0);
controls.update();
scene = new THREE.Scene();
scene.background = new THREE.Color(0xeeeeee);
scene.environment = new RoomEnvironment(renderer);
scene.fog = new THREE.Fog(0xeeeeee, 10, 50);
...
好吧,我的场景是这样开始的:
我想开始加倍我的对象,像这样:
我试试:
camera.zoom.set(2);
但什么也没发生 所以我尝试定义一个 vector3 (2,2,2) 并缩放我的对象:
myobj.scale.set(myVector3);
没有。
有人可以帮助我开始我的对象更大的场景吗?
非常感谢
如果你这样做:
camera.zoom.set(2);
您必须确保像这样更新项目矩阵:
camera.updateProjectionMatrix();
关于另一个问题,Vector3.set()
只接受三个标量作为参数。您不能将方法与 Vector3
类型的单个参数一起使用。所以你可以这样做:
myobj.scale.set(myVector3.x, myVector3.y, myVector3.z);
甚至更好:
myobj.scale.copy(myVector3);