要创建简单的计划,您不必创建 3D 模型。有一种更简单的方法可以做到这一点,但首先您必须使用相机和渲染器创建 3D 场景。此外,您必须在页面中添加<div> 标签才能在其中呈现场景。
添加到 HTML:
<div id="scene" style="width:1000px; height:500px"></div>
JS 可能看起来像这样:
var mountElem = document.getElementById('scene');
var width = mountElem.innerWidth;
var height = mountElem.innerHeight;
function createScene() {
var scene = new THREE.Scene();
var camera = getNewCamera(scene.position);
var renderer = getNewRenderer();
// Add plane
var white = 0xffffff;
var plane = getNewPlane(100, 100, white);
scene.add(plane);
renderScene(renderer, scene, camera);
}
function getNewCamera(lookAtPos) {
var viewPort = 45;
var near = 0.1;
var far = 10000;
var camera = new THREE.PerspectiveCamera(viewPort, width / height, near, far);
// Set initial position position
camera.position.set(0, 50, 200);
camera.lookAt(lookAtPos);
return camera;
}
function getNewRenderer() {
var sceneBackgroundColor = 0xaaaaff;
var alpha = 1;
var renderer = new THREE.WebGLRenderer();
renderer.setSize(width, height);
renderer.setClearColor(sceneBackgroundColor, alpha);
return renderer;
}
function getNewPlane(planeWidth, planeHeight, color) {
var geometry = new THREE.PlaneBufferGeometry(planeWidth, planeHeight, 1, 1);
var material = new THREE.MeshBasicMaterial({ color: color, side: THREE.DoubleSide });
var plane = new THREE.Mesh(geometry, material);
plane.position.set(0, 0, 0);
return plane;
}
function renderScene(renderer, scene, camera) {
mountElem.appendChild(renderer.domElement);
render(renderer, scene, camera);
}
function render(renderer, scene, camera) {
requestAnimationFrame(function() { render(renderer, scene, camera); });
renderer.render(scene, camera);
}
像这样移动一个物体/平面:
plane.position.x += movementX;
plane.position.y += movementY;
plane.position.z += movementZ;
您可以在<div> 上应用mousemove 事件并将上述移动代码放入该事件函数中。 movementX/Y/Z 将是鼠标的移动。
希望有所帮助。