Javascript 为什么我不能在three.js中缩放或设置网格的位置?
正如您在下面看到的,我在场景中添加了一个网格,但每次尝试缩放它或设置位置时,我都会得到一个错误,即网格为空Javascript 为什么我不能在three.js中缩放或设置网格的位置?,javascript,three.js,Javascript,Three.js,正如您在下面看到的,我在场景中添加了一个网格,但每次尝试缩放它或设置位置时,我都会得到一个错误,即网格为空 mesh2.position.set(0,0,-5); mesh2.scale.set(0.2, 0.3, 0.2); 未捕获的TypeError:无法读取null的属性“位置” 查看 请帮帮我,因为我已经浪费了好几个小时试图让它工作 function init() { var scene = new THREE.Scene();//CREATE NEW THREE JS
mesh2.position.set(0,0,-5);
mesh2.scale.set(0.2, 0.3, 0.2);
未捕获的TypeError:无法读取null的属性“位置”
查看
请帮帮我,因为我已经浪费了好几个小时试图让它工作
function init()
{
var scene = new THREE.Scene();//CREATE NEW THREE JS SCENE
var SCREEN_WIDTH = window.innerWidth, SCREEN_HEIGHT = window.innerHeight;
var renderer = new THREE.WebGLRenderer({antialias:true}); //INIT NEW THREE JS RENDERER
renderer.setPixelRatio( window.devicePixelRatio ); //SET PIXEL RATIO FOR MOBILE DEVICES
renderer.setClearColor(new THREE.Color('#005b96'), 1) //SET BG COLOR
renderer.setSize(SCREEN_WIDTH, SCREEN_HEIGHT); // SET SIZE
document.body.appendChild( renderer.domElement ); //APPLY CANVAS TO BODY
renderer.domElement.id = "canvas_threeJS";//ADD ID TO CANVAS
//ADD CAMERA TO THE SCENE
var VIEW_ANGLE = 45, ASPECT = SCREEN_WIDTH / SCREEN_HEIGHT, NEAR = 0.1, FAR =1000;
var camera = new THREE.PerspectiveCamera( VIEW_ANGLE, ASPECT, NEAR, FAR);
camera.position.set(0,3,8); //SET CAMERA POSITION
camera.lookAt(new THREE.Vector3(0,0,-5));
scene.add(camera);
//ADD AMBIENT LIGHT
var ambientLight = new THREE.AmbientLight("#6497b1");
scene.add(ambientLight);
//HANDLE WINDOW RESIZE
//ADD MAIN LIGHT
var light = new THREE.PointLight("#b3cde0",.6);
light.position.set(-5,13,-1);
scene.add(light);
var mesh2 = null;
var loader = new THREE.JSONLoader();
loader.load('assets/models/spaceship001.json', function(geometry) {
mesh2 = new THREE.Mesh(geometry);
scene.add(mesh2);
console.log("done loading model");
});
mesh2.position.set(0,0,-5);
// mesh2.scale.set(0.2, 0.3, 0.2);
//START POSITION OF A LEVEL GROUP
var levelSpawn = -100;
//GET VISIBLE WIDTH AT levelSpawn POSITION
var vFOV = camera.fov * Math.PI / 180; // convert vertical fov to radians
var height = 2 * Math.tan( vFOV / 2 )*levelSpawn; // visible height
var aspect = window.innerWidth / window.innerHeight;
var width = height * aspect;// visible width
//START RENDER
update();
function update()
{
//UPDATE 3D SCENE
renderer.render( scene, camera );
//KEEP RENDERING
requestAnimationFrame( update );
}
}
问题在于javascript是一种异步语言。根据你的背景,你应该仔细阅读。尝试将
console.log(“设置比例和位置”)
放在这两行的正下方或上方。您会注意到,在加载网格之前,位置和比例设置为
您需要做的是在传递给加载函数的回调函数中设置位置和比例,就在console.log(“done loading model”)下面代码>行
您还可以阅读javascript承诺,以便更好地理解它。问题在于javascript是一种异步语言。根据你的背景,你应该仔细阅读。尝试将console.log(“设置比例和位置”)
放在这两行的正下方或上方。您会注意到,在加载网格之前,位置和比例设置为
您需要做的是在传递给加载函数的回调函数中设置位置和比例,就在console.log(“done loading model”)下面代码>行
您还可以阅读javascript承诺以更好地理解它。加载模型是异步的。您的代码在加载模型之前执行,请将其放在回调中。加载模型是异步的。在加载模型之前执行代码,请将其放在回调中。