#dom #three.js
#dom #three.js
Вопрос:
это весь мой код, я получаю все three.js источник из моего каталога node_modules, который я установил через yarn
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>hello World</title>
<link rel="stylesheet" href="css/main.css">
</head>
<script src="node_modules/three/build/three.js"></script>
<body>
</body>
<script>
let scene = new THREE.Scene();
let camera = new THREE.PerspectiveCamera(75, window.innerWidth/window.innerHieght, 0.1, 1000);
camera.position.z = 10;
let renderer = new THREE.WebGLRenderer({antialias: true});
renderer.setClearColor("#CCC");
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
window.addEventListener('resize', () => {
renderer.setSize(window.innerWidth, window.innerHeight);
camera.aspect = window.innerWidth / window.innerHeight;
camera.updateProjectionMatrix();
})
let geometry = new THREE.BoxGeometry(1, 1, 1);
let material = new THREE.MeshLambertMaterial({color: 0xFFCC00});
let mesh = new THREE.Mesh(geometry, material);
scene.add(mesh);
let light = new THREE.PointLight(0xffffff, 1, 500);
light.position.set(10,0,25);
renderer.render(scene, camera);
console.log("compiled")
</script>
</html>
Я не получаю ошибок, и BoxGeometry не отображается, я вижу светло-серый холст, который я установил для представления рендеринга, ничего из того, что я пробовал, не работает
Я запускаю это на macOS 11.0.1 через Chrome
Ответ №1:
В вашем коде есть опечатка. innerHieght
должно быть innerHeight
. Кроме того, необходимо добавить точечный свет в вашу сцену.
const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
camera.position.z = 10;
const renderer = new THREE.WebGLRenderer({
antialias: true
});
renderer.setClearColor("#CCC");
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
const geometry = new THREE.BoxGeometry(1, 1, 1);
const material = new THREE.MeshLambertMaterial({
color: 0xFFCC00
});
const mesh = new THREE.Mesh(geometry, material);
scene.add(mesh);
const light = new THREE.PointLight(0xffffff, 1, 500);
light.position.set(10, 0, 25);
scene.add(light);
renderer.render(scene, camera);
body {
margin: 0;
}
<script src="https://cdn.jsdelivr.net/npm/three@0.123/build/three.js"></script>