Object 3D、clone用法
by j91157j91157
HTML
<!DOCTYPE html>
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/84/three.min.js"></script>
<script src="https://threejs.org/examples/js/controls/OrbitControls.js"></script>
CSS
body {
overflow: hidden
}
JavaScript
var renderer, camera, controls, scene;
init();
animate();
function init() {
renderer = new THREE.WebGLRenderer({
antialias: true
});
renderer.setSize(window.innerWidth, window.innerHeight);
renderer.setClearColor(0x888888);
document.body.appendChild(renderer.domElement);
camera = new THREE.PerspectiveCamera(50, window.innerWidth / window.innerHeight, 1, 1000);
camera.position.y = 40;
camera.position.z = 50; // important
controls = new THREE.OrbitControls(camera, renderer.domElement);
scene = new THREE.Scene();
var gridXZ = new THREE.GridHelper(100, 10, 'red', 'white');
scene.add(gridXZ);
var aou = buildAou();
scene.add (aou);
var aou2 = aou.clone();
aou2.rotation.y = Math.PI/6;
aou2.position.set (10,0,20);
scene.add (aou2);
}
function animate() {
controls.update();
renderer.render (scene, camera);
requestAnimationFrame (animate);
}
function buildAou () {
var aou = new THREE.Object3D();
var normalMat = new THREE.MeshNormalMaterial();
var column1 = new THREE.Mesh( new THREE.BoxGeometry (10,30,10), normalMat);
var flat = new THREE.Mesh (new THREE.BoxGeometry (20, 10,10), normalMat);
var column2 = new THREE.Mesh( new THREE.BoxGeometry (10,30,10), normalMat);
aou.add (column1);
aou.add (flat);
aou.add (column2);
column1.position.set (5, 15, -5);
flat.position.set (20, 5, -5);
column2.position.set (35, 15, -5);
return aou;
}