javascript - THREE.js - 如何加载对象?
问题描述
我刚开始学习 THREE.js。虽然我能够很好地制作立方体和球体,但每当我尝试加载 .obj 时,它都会不断抛出随机错误。我完全糊涂了。
// instantiate a loader
const loader = new OBJLoader();
// load a resource
loader.load(
// resource URL
'models/boat_large.obj',
// called when resource is loaded
function ( object ) {
scene.add( object );
},
// called when loading is in progresses
function ( xhr ) {
console.log( ( xhr.loaded / xhr.total * 100 ) + '% loaded' );
},
// called when loading has errors
function ( error ) {
console.log( 'An error happened' );
}
);
我得到错误:
OBJLoader is not defined
我添加<script type="module" src="loaders/OBJLoader.js"></script>
到我的 html 中,我得到了错误:
Access to script at 'file:///C:/Users/Syzygy/Desktop/hello/www/loaders/OBJLoader.js' from origin 'null' has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, chrome-untrusted, https.
我已经按照我能找到的所有教程,我没有取得任何进展
解决方案
这是一个示例(基于一些three.js
代码),其中包含所有部分和一些动画。
<html>
<body>
<script type="module">
import * as THREE from "https://unpkg.com/three@0.125.2/build/three.module.js";
import { OBJLoader } from "https://unpkg.com/three@0.125.2/examples/jsm/loaders/OBJLoader.js";
const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(
75,
window.innerWidth / window.innerHeight,
0.1,
1000
);
const renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
renderer.setClearColor("#ffffff");
document.body.appendChild(renderer.domElement);
var model;
const loader = new OBJLoader();
loader.load("obj_model_name.obj", obj => {
model = obj;
scene.add(model);
});
camera.position.set(10, 10, 10);
camera.lookAt(0, 0, 0);
const animate = function() {
requestAnimationFrame(animate);
if (model) {
model.rotation.x += 0.01;
model.rotation.y += 0.01;
}
renderer.render(scene, camera);
};
animate();
</script>
</body>
</html>
推荐阅读
- ocaml - 在 mirageos 中使用 C 库
- css - 保持 btn:focus 样式
- javascript - JavaScript - 在悬停时突出显示元素
- vba - VBA - 如何在表格中的文本中途开始选择
- python - 如何将文件从最低到最高排序,包括负数?
- ios - Firebase .isEmailVerified 返回错误
- java - 如何使用 servlet 为 Eclipse 中的所有 html 和 jsp 页面维护一个唯一的会话?
- javascript - 当服务器端不允许 cors 时在 javascript 中发出 ajax 请求?
- animation - 我想在 svg 路径中的选定点开始 svg 路径的动画
- javascript - 处理 render() 函数中 componentDidMount() 中定义的变量