我写了一个Three.js,使用Maya导出了一个OBJ的三维模型文件,使用Three.js默认给出的转换脚本使OBJ转换为JS的JSON文件,转换代码 convert_obj_three.py -i model.obj -o model.js编写了一个页面 装载了Three.js,并创建场景摄像机等,现在的问题是我要jsonloader.load就假死在那里没有反应,比较关键的是我不清楚jsonloader.load的用法是什么,代码如下问题代码 function initObject_JS()
{
alert("init object");
/* Show model */
var jsonloader = new THREE.JSONLoader();
jsonloader.load( {model: "Model_ascii.js", callback: createScene } ); alert("success");
}function createScene( geometry ) {
alert("in");
var object = new THREE.Mesh( geometry, new THREE.MeshFaceMaterial());
object.position.x=-15;
object.position.y=-5;
object.scale.x = object.scale.y = object.scale.z = 4;
scene.addObject( object );
}
全部代码<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Three.js Exporter</title>
<script src="Three.js"></script>
<script src="tree.js"></script>
<style type="text/css">
div#canvas-frame{
border: none;
cursor: pointer;
width: 1024px;
height: 1024px;
background-color: #EEEEEE;
}
</style>
<script>
var geometry; var renderer;
function initThree() {
width = document.getElementById('canvas-frame').clientWidth;
height = document.getElementById('canvas-frame').clientHeight;
renderer = new THREE.WebGLRenderer({antialias: true});
renderer.setSize(width, height );
document.getElementById('canvas-frame').appendChild(renderer.domElement);
renderer.setClearColorHex(0xFFFFFF, 1.0);
}
var camera;
function initCamera() {
camera = new THREE.PerspectiveCamera( 45 , width / height , 0.001 , 10000 );
camera.position.x = 100;
camera.position.y = 100;
camera.position.z = 100;
camera.up.x = 0;
camera.up.y = 0;
camera.up.z = 1;
camera.lookAt( {x:0, y:0, z:0 } );
}
var scene;
function initScene() {
scene = new THREE.Scene();
}
var light;
function initLight() {
light = new THREE.DirectionalLight(0xFFFFFF, 1.0, 0);
light.position.set( 100, 100, 200 );
scene.add(light);
}
var cube;
function initObject(){
cube = new THREE.Mesh(
new THREE.CubeGeometry(50,50,50), //Geometry
new THREE.MeshLambertMaterial({color: 0xff0000}) //material
);
scene.add(cube);
cube.position.set(0,0,0);
}
function initObject_JS()
{
alert("init object");
/* Show model */
var jsonloader = new THREE.JSONLoader();
jsonloader.load( {model: "Model_ascii.js", callback: createScene } ); alert("success");
}function createScene( geometry ) {
alert("in");
var object = new THREE.Mesh( geometry, new THREE.MeshFaceMaterial());
object.position.x=-15;
object.position.y=-5;
object.scale.x = object.scale.y = object.scale.z = 4;
scene.addObject( object );
} function threeStart() {
//initThree
initThree();
//init camera
initCamera();
//init scene
initScene();
//init ligth
initLight(); initObject_JS();
renderer.clear();
renderer.render(scene, camera);
}
</script>
</head>
<body onload="threeStart();">
<!-- canvas -->
<div id="canvas-frame"></div>
</body>
</html>
{
alert("init object");
/* Show model */
var jsonloader = new THREE.JSONLoader();
jsonloader.load( {model: "Model_ascii.js", callback: createScene } ); alert("success");
}function createScene( geometry ) {
alert("in");
var object = new THREE.Mesh( geometry, new THREE.MeshFaceMaterial());
object.position.x=-15;
object.position.y=-5;
object.scale.x = object.scale.y = object.scale.z = 4;
scene.addObject( object );
}
全部代码<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Three.js Exporter</title>
<script src="Three.js"></script>
<script src="tree.js"></script>
<style type="text/css">
div#canvas-frame{
border: none;
cursor: pointer;
width: 1024px;
height: 1024px;
background-color: #EEEEEE;
}
</style>
<script>
var geometry; var renderer;
function initThree() {
width = document.getElementById('canvas-frame').clientWidth;
height = document.getElementById('canvas-frame').clientHeight;
renderer = new THREE.WebGLRenderer({antialias: true});
renderer.setSize(width, height );
document.getElementById('canvas-frame').appendChild(renderer.domElement);
renderer.setClearColorHex(0xFFFFFF, 1.0);
}
var camera;
function initCamera() {
camera = new THREE.PerspectiveCamera( 45 , width / height , 0.001 , 10000 );
camera.position.x = 100;
camera.position.y = 100;
camera.position.z = 100;
camera.up.x = 0;
camera.up.y = 0;
camera.up.z = 1;
camera.lookAt( {x:0, y:0, z:0 } );
}
var scene;
function initScene() {
scene = new THREE.Scene();
}
var light;
function initLight() {
light = new THREE.DirectionalLight(0xFFFFFF, 1.0, 0);
light.position.set( 100, 100, 200 );
scene.add(light);
}
var cube;
function initObject(){
cube = new THREE.Mesh(
new THREE.CubeGeometry(50,50,50), //Geometry
new THREE.MeshLambertMaterial({color: 0xff0000}) //material
);
scene.add(cube);
cube.position.set(0,0,0);
}
function initObject_JS()
{
alert("init object");
/* Show model */
var jsonloader = new THREE.JSONLoader();
jsonloader.load( {model: "Model_ascii.js", callback: createScene } ); alert("success");
}function createScene( geometry ) {
alert("in");
var object = new THREE.Mesh( geometry, new THREE.MeshFaceMaterial());
object.position.x=-15;
object.position.y=-5;
object.scale.x = object.scale.y = object.scale.z = 4;
scene.addObject( object );
} function threeStart() {
//initThree
initThree();
//init camera
initCamera();
//init scene
initScene();
//init ligth
initLight(); initObject_JS();
renderer.clear();
renderer.render(scene, camera);
}
</script>
</head>
<body onload="threeStart();">
<!-- canvas -->
<div id="canvas-frame"></div>
</body>
</html>
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货