Three.js没有从我的Planet构造函数渲染我的纹理

萨尔瓦德斯科

我有一个函数,该函数从数据集中获取轨道参数和纹理图像,并创建一个3d对象(一个行星)。但是由于某些原因,没有渲染纹理。使用BasicMaterial可以正常工作,但不能与StandardMaterialPhongMaterial一起使用(场景中有一个点光源),我已经在循环和功能之外测试了纹理,它们工作得很好。我不知道该怎么办。我在这里输入代码。

for(var i=0;i < results.data.length; i++){
              
 const EC = Number(results.data[i]["Eccentricity"]); //Eccentricity
 const IN = Number(results.data[i]["Inclination [Rad]"]) ; //Inclination
 const OM = Number(results.data[i]["Orbit Rotation_Y [Rad]"]) ; //Longitude of ascending node
 const W = Number(results.data[i]["Orbit Rotation_X [Rad]"]); //Argument of periapsis
 const A = Number(results.data[i]["Orbit semi-major axis [UA]"]); //Semi-major axis
 const EcRadius = Number(results.data[i]["Relative Equatorial Radius"]); //Radius
 const NAM = results.data[i]["Name"]; //Name
 const textureUrl = results.data[i]["TextureFileUrl"]; //Texture image of the planet

 const loader = new THREE.TextureLoader();
 loader.load(textureUrl, function ( texture ) {
    // Create the material when the texture is loaded
    var tex = texture.clone();
    const PlanetMaterial = new THREE.MeshBasicMaterial( {
    map: tex
    } );
    scene.add(CreatePlanet( 0,0,0, EC,IN,OM,W,A,EcRadius, NAM, 0x4E4E4E, 0.5, PlanetMaterial ));
    },
  undefined,
  function ( err ) {
     console.error( 'An error happened.');
  }
  );
} 

CreatePlanet函数只是使用给定的材质创建一个网格。喜欢:

const geometryPlanet = new THREE.SphereBufferGeometry(EcRadius, 300, 300);
const Planet = new THREE.Mesh(geometryPlanet, PlanetMaterial);
return Planet;

预先感谢您的帮助。

木根87

var tex = texture.clone();

执行此操作时,您可以添加以下行吗?

tex.needsUpdate = true;

在这种情况下,这是必需的,否则纹理的内容将永远不会上传到GPU。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Three.js:我是否必须为每个纹理设置各向异性纹理过滤?

来自分类Dev

Three.js-TypeError:THREE.Scene不是构造函数

来自分类Dev

Three.js THREE.DeviceOrientationControls不是构造函数

来自分类Dev

three.js渲染到纹理Alpha无法正常工作

来自分类Dev

THREE.js-在从TubeGeometry构造的网格上移动纹理

来自分类Dev

Three.js javascript性能函数构造

来自分类Dev

类似于three.js的构造函数

来自分类Dev

Three.js-更新纹理

来自分类Dev

凹凸贴图对three.js中的纹理没有影响

来自分类Dev

Three.js-没有纹理绑定到单元0错误

来自分类Dev

在Three.js中,当使用OrbitControls时,出现Uncaught TypeError:当我尝试实例化它时,THREE.OrbitControls不是构造函数。

来自分类Dev

three.js具有许多纹理的网格

来自分类Dev

three.js-具有透明纹理的相交平面

来自分类Dev

Three.js重叠透明PNG纹理有黑色背景

来自分类Dev

THREE.js没有阴影

来自分类Dev

Three.js LightMap没有显示?

来自分类Dev

three.js:BufferGeometry和纹理

来自分类Dev

Three.js透明模型纹理错误

来自分类Dev

Three.js使用framebuffer作为纹理

来自分类Dev

使用Three.js进行纹理喷涂

来自分类Dev

用户在three.js中上传纹理

来自分类Dev

three.js从cubecamera创建纹理

来自分类Dev

在THREE.js中纹理球体

来自分类Dev

THREE.js-无法在本地加载纹理

来自分类Dev

如何水平翻转Three.js纹理

来自分类Dev

three.js:纹理全黑

来自分类Dev

three.js:纹理全白

来自分类Dev

Three.js中的图素纹理

来自分类Dev

如何垂直翻转Three.js纹理?