Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Three.JS帮助加载GLTF模型_Javascript_Three.js - Fatal编程技术网

Javascript Three.JS帮助加载GLTF模型

Javascript Three.JS帮助加载GLTF模型,javascript,three.js,Javascript,Three.js,我正在使用教程学习THREE.JS。我正在努力加载我的GLTF模型。它没有显示在浏览器中。我需要创建两个场景吗?一个是我的背景,一个是我的模特?也没有我可以处理的控制台错误。我查阅了另一篇关于堆栈溢出的文章,其中讨论了类似的问题,他们讨论了实现动画功能,但我已经包括了这一点 var canvas, renderer, scene, camera, particle, loader; window.onload = function() { init(); animate(); }

我正在使用教程学习THREE.JS。我正在努力加载我的GLTF模型。它没有显示在浏览器中。我需要创建两个场景吗?一个是我的背景,一个是我的模特?也没有我可以处理的控制台错误。我查阅了另一篇关于堆栈溢出的文章,其中讨论了类似的问题,他们讨论了实现动画功能,但我已经包括了这一点

var canvas, renderer, scene, camera, particle, loader;

window.onload = function() {
  init();
  animate();

}

function init() {
  renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true });
  renderer.setPixelRatio((window.devicePixelRatio) ? window.devicePixelRatio 
  : 1);
  renderer.setSize(window.innerWidth, window.innerHeight);
  renderer.autoClear = false;
  renderer.setClearColor(0x000000, 0.0);
  document.getElementById('canvas').appendChild(renderer.domElement);

  scene = new THREE.Scene();

  camera = new THREE.PerspectiveCamera(75, window.innerWidth / 
  window.innerHeight, 1, 1000);
  camera.position.z = 400;
  scene.add(camera);


  var loader = new THREE.GLTFLoader();
  loader.load('models/scene.glb', function(gltf){
    let model = gltf.scene
    let child = model.children[0]
    model.scale.x = model.scale.y = model.scale.z = 0.15;
    model.castShadow = true;
    model.receiveShadow = true;
    model.position.y = -0.5;

    scene.add(model);
  }, undefined, function (error){
    console.error(error);
  });


  var material = new THREE.MeshPhongMaterial({
    color: 0xffffff,
    shading: THREE.FlatShading
  });

  particle = new THREE.Object3D();
  scene.add(particle);
  var geometry = new THREE.SphereGeometry(2, 12, 12);

  for (var i = 0; i < 1000; i++) {
    var mesh = new THREE.Mesh(geometry, material);
    mesh.position.set(Math.random() - 0.5, Math.random() - 0.5, Math.random() 
    - 0.5).normalize();
    mesh.position.multiplyScalar(90 + (Math.random() * 700));
    mesh.rotation.set(Math.random() * 2, Math.random() * 2, Math.random() * 
    2);
    particle.add(mesh);
  }

  var mat = new THREE.MeshPhongMaterial({
    color: 0xffffff,
    shading: THREE.FlatShading
  });

  var mat2 = new THREE.MeshPhongMaterial({
    color: 0xffffff,
    wireframe: true,
    side: THREE.DoubleSide

  });


  var ambientLight = new THREE.AmbientLight(0x999999 );
  scene.add(ambientLight);

  var lights = [];
  lights[0] = new THREE.DirectionalLight( 0xffffff, 1 );
  lights[0].position.set( 1, 0, 0 );
  lights[1] = new THREE.DirectionalLight( 0x11E8BB, 1 );
  lights[1].position.set( 0.75, 1, 0.5 );
  lights[2] = new THREE.DirectionalLight( 0x8200C9, 1 );
  lights[2].position.set( -0.75, -1, 0.5 );
  scene.add( lights[0] );
  scene.add( lights[1] );
  scene.add( lights[2] );


  window.addEventListener('resize', onWindowResize, false);

};

function onWindowResize() {
  camera.aspect = window.innerWidth / window.innerHeight;
  camera.updateProjectionMatrix();
  renderer.setSize(window.innerWidth, window.innerHeight);
}

function animate() {
  requestAnimationFrame(animate);

  particle.rotation.x += 0.0000;
  particle.rotation.y -= 0.0040;

  renderer.clear();

  renderer.render( scene, camera )
};
var画布、渲染器、场景、摄影机、粒子、加载程序;
window.onload=函数(){
init();
制作动画();
}
函数init(){
renderer=new THREE.WebGLRenderer({antialas:true,alpha:true});
renderer.setPixelRatio((window.devicePixelRatio)?window.devicePixelRatio
: 1);
renderer.setSize(window.innerWidth、window.innerHeight);
renderer.autoClear=false;
setClearColor(0x000000,0.0);
document.getElementById('canvas').appendChild(renderer.doElement);
场景=新的三个。场景();
摄像头=新的三个透视摄像头(75,窗口宽度/
窗内高度,11000);
摄像机位置z=400;
场景。添加(摄影机);
var loader=new THREE.GLTFLoader();
loader.load('models/scene.glb',函数(gltf){
让model=gltf.scene
let child=model.children[0]
model.scale.x=model.scale.y=model.scale.z=0.15;
model.castShadow=true;
model.receiveShadow=true;
model.position.y=-0.5;
场景。添加(模型);
},未定义,函数(错误){
控制台错误(error);
});
var材质=新的3.0网格材质({
颜色:0xffffff,
明暗处理:3.5倍明暗处理
});
粒子=新的三个。Object3D();
场景。添加(粒子);
var几何=新的三种。球墨法(2,12,12);
对于(变量i=0;i<1000;i++){
var mesh=新的三个网格(几何体、材质);
mesh.position.set(Math.random()-0.5,Math.random()-0.5,Math.random())
-0.5)。标准化();
mesh.position.multilyscalar(90+(Math.random()*700));
mesh.rotation.set(Math.random()*2,Math.random()*2,Math.random()*
2);
粒子。添加(网格);
}
var mat=新的三点网格材料({
颜色:0xffffff,
明暗处理:3.5倍明暗处理
});
var mat2=新的三点网格材质({
颜色:0xffffff,
线框:对,
侧面:三个。双面
});
var环境光=新的三个环境光(0x999999);
场景。添加(环境光);
var灯=[];
灯光[0]=新的三个方向灯光(0xffffff,1);
灯光[0].位置.set(1,0,0);
灯[1]=新的三方向灯(0x11E8BB,1);
灯光[1].位置.set(0.75,1,0.5);
灯[2]=新的三方向灯(0x8200C9,1);
灯光[2]。位置。设置(-0.75,-1,0.5);
场景。添加(灯光[0]);
场景。添加(灯光[1]);
场景。添加(灯光[2]);
addEventListener('resize',onWindowResize,false);
};
函数onWindowResize(){
camera.aspect=window.innerWidth/window.innerHeight;
camera.updateProjectMatrix();
renderer.setSize(window.innerWidth、window.innerHeight);
}
函数animate(){
请求动画帧(动画);
粒子旋转x+=0.0000;
粒子旋转y-=0.0040;
.clear();
渲染器。渲染(场景、摄影机)
};

尝试检查dev tools的“网络”选项卡,以确保它正在加载很多内容,这取决于
.glb
文件中的内容。使用
console.log()。其次,您的
.glb
对象可能太大(因此摄影机在其内部)或太小(可能在某物后面渲染),或看不见(可能在x轴上偏离1000个单位)。。。如果没有一个实例,就不可能准确地说出发生了什么。