我已经使用three.js提供的插件导出了我之前制作的简单的blender模型,该插件创建了一个.json文件。然后我尝试将该文件导入到我的项目中,但根本没有成功。
我在本地服务器上拥有它,因为文件传输不允许通过file://,因此,我正在使用HTTP。
问题是我看不到模型。我正在使用以下代码导入它:
var loader = new THREE.JSONLoader();
loader.load( 'model/mountain.json', function ( geometry ) {
var mesh = new THREE.Mesh( geometry, new THREE.MeshBasicMaterial() );
scene.add( mesh );
});
我可以正确设置相机和场景,因为我可以创建和添加原生的three.js形状,例如盒子和平原,我100%确定文件位于正确的位置。
答案 0 :(得分:0)
我问过reddit,/ u / Egenimo帮我解答了答案!
这里是整个代码,因为我认为它可能会帮助那些需要设置场景的人。
var canvas = document.getElementById("bgcanvas"),
renderer = new THREE.WebGLRenderer({ canvas: canvas, alpha: true }),
windowHeight = window.innerHeight,
windowWidth = window.innerWidth,
camera, scene, renderer, loader;
init();
function init() {
renderer.setSize(window.innerWidth, window.innerHeight);
renderer.setClearColor(0x000000, 0);
renderer.shadowMapEnabled = true;
renderer.shadowMapType = THREE.PCFSoftShadowMap;
document.body.appendChild(renderer.domElement);
// camera
camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 1, 1000);
camera.position.z = 5;
// scene
scene = new THREE.Scene();
loader = new THREE.JSONLoader();
loader.load( 'cube.json', function ( geometry ) {
var mesh = new THREE.Mesh(geometry, new THREE.MeshNormalMaterial({overdraw: true}));
scene.add( mesh );
});
console.log(scene.children.length);
render();
}
function render() {
requestAnimationFrame(function() {
render();
});
renderer.render(scene, camera);
}
然后我遇到了一个更复杂的模型,有几个对象的问题,而ThreeJS只会导入一个,因此,在查找之后,我通过the Man himself!找到了这个答案。
希望这可以帮助有需要的人!