【问题标题】:Sphere texture does not cover the whole sphere球体纹理不覆盖整个球体
【发布时间】:2017-02-22 21:55:33
【问题描述】:

在球体上应用纹理时,两极出现难看的褶皱,部分纹理丢失。

var geometry = new THREE.SphereGeometry(50, 50, 50, 0, Math.PI * 2, 0, Math.PI * 2);
var load = new THREE.TextureLoader().load("e.jpg");
load.anisotropy = 8;
var material = new THREE.MeshBasicMaterial({
    map: load,
    overdraw: true
});
sphere = new THREE.Mesh(geometry, material);
scene.add(sphere);

如何正确做?

【问题讨论】:

    标签: javascript three.js


    【解决方案1】:

    您创建的球体的数量是circles of latitude 的两倍。
    试试这个:

    var geometry = new THREE.SphereGeometry(50, 50, 50, 0, Math.PI * 2, 0, Math.PI);
    var load = new THREE.TextureLoader().load("e.jpg");
    load.anisotropy = 8;
    var material = new THREE.MeshBasicMaterial({
        map: load,
        overdraw: true
    });
    sphere = new THREE.Mesh(geometry, material);
    scene.add(sphere);
    

    顺便说一句,您可以通过不将额外参数传递给构造函数来将额外参数保留为默认值:

    var geometry = new THREE.SphereGeometry(50, 50, 50);
    

    【讨论】:

      【解决方案2】:

      您好,首先尝试加载所需的图像,然后在加载时使用以下代码。

      var earthTexture = new THREE.TextureLoader().load("e.jpg");
      var earthGeometery = new THREE.SphereGeometry(50, 50, 50);
      var earthMaterial = new THREE.MeshLambertMaterial({
              map: earthTexture,
              transparent: false
          });
      

      imgObj : 是图像对象

      【讨论】:

      • 更好用THREE.TextureLoader()
      猜你喜欢
      • 2022-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-12
      • 2018-06-03
      • 2013-10-21
      • 2014-04-06
      相关资源
      最近更新 更多