自定义物体
import * as THREE from 'three'
import { OrbitControls } from "three/examples/jsm/controls/OrbitControls";
window.onload = (() => {
let number = 0.01;
const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(75, innerWidth / innerHeight, 0.1, 1000);
camera.position.set(0, 0, 5);
const boxView = new THREE.BoxGeometry(1, 1, 1);
const mesh = new THREE.MeshBasicMaterial({ color: '#fff000' });
const planeView = new THREE.PlaneGeometry(20, 60);
const planeMesh = new THREE.ShadowMaterial();
planeMesh.opacity = 0.2;
const cubePlane = new THREE.Mesh(planeView, planeMesh);
const geometry = new THREE.BufferGeometry();
const geometry1 = new THREE.BufferGeometry();
const vertices = new Float32Array([
1.0,3.0,0,
1.0,1.0,0,
3.0,1.0,0
]);
const vertices1 = new Float32Array([
1.0,3.0,0,
3.0,3.0,0,
3.0,1.0,0
]);
geometry1.setAttribute('position', new THREE.BufferAttribute(vertices1, 3))
const cube1 = new THREE.Mesh(geometry1, mesh);
geometry.setAttribute('position', new THREE.BufferAttribute(vertices, 3))
const cube = new THREE.Mesh(geometry, mesh);
scene.add(cube);
scene.add(cube1)
scene.add(camera);
const renderer = new THREE.WebGL1Renderer({ antialias: true });
renderer.setSize(innerWidth, innerHeight);
scene.add(new THREE.AxesHelper(5))
document.body.appendChild(renderer.domElement);
const orbit = new OrbitControls(camera, renderer.domElement);
orbit.enableDamping = true;
render();
function render() {
orbit.update();
renderer.render(scene, camera);
requestAnimationFrame(render);
}
window.addEventListener('resize', () => {
camera.aspect = window.innerWidth / window.innerHeight;
camera.updateProjectionMatrix();
renderer.setSize(window.innerWidth, window.innerHeight);
renderer.setPixelRatio(window.devicePixelRatio);
})
window.addEventListener('dblclick', () => {
if (!document.fullscreenElement) {
renderer.domElement.requestFullscreen();
} else {
document.exitFullscreen();
}
})
})()
()