Three.js:在将大多数图像加载到球体的背面时遇到问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Three.js:在将大多数图像加载到球体的背面时遇到问题相关的知识,希望对你有一定的参考价值。

我是Three.js的新手,这是我的第一个实际项目,因此,我遇到的问题可能很容易解决,但在此问题上我坚持了2周。我一直在尝试在Three.js中制作一个带有星星的地球模型,唯一的问题是到目前为止,我尝试过的每个图像,除了地球图像根本无法在第二个大球体上起作用。

这是我用于地球的图像:https://sos.noaa.gov/ftp_mirror/land/blue_marble/blue_marble/4096.jpg

这些是我为星空拍摄的一些图像:https://pm1.narvii.com/7090/6314dd7daedcc9bbb46da6f8ac7b7e5f4b44cecfr1-600-378v2_hq.jpghttps://i1.wp.com/www.ournewearthnews.com/wp-content/uploads/2019/03/wallpaper.wiki-Galaxy-Background-HD-PIC-WPC-PIC-MCH0113800.jpg?fit=3864%2C1808&ssl=1

<script>

        //pre stuff
        var scene = new THREE.Scene();
        var camera = new THREE.PerspectiveCamera( 75, window.innerWidth/window.innerHeight, 0.1, 1000 );
        var loader = new THREE.ImageLoader();
        camera.position.z = 5;

        const canvas = document.querySelector('#c');
        var renderer = new THREE.WebGLRenderer(canvas);
        renderer.setSize( window.innerWidth, window.innerHeight );
        document.body.appendChild( renderer.domElement );

        var ambient = new THREE.AmbientLight( 0xF6FBFF );
        scene.add( ambient );

        // main code

        var geometry = new THREE.SphereGeometry(2,72,72);
        var texture = THREE.ImageUtils.loadTexture('Earth.jpg');
        var material = new THREE.MeshPhongMaterial(map: texture);
        var sphere = new THREE.Mesh( geometry, material );
        sphere.rotateX( .4 );
        scene.add( sphere );



  var geometry2 = new THREE.SphereGeometry(10,72,72);
  var material2 = new THREE.MeshBasicMaterial();
    material2.map   = THREE.ImageUtils.loadTexture('star-map.jpg')
    material2.side  = THREE.BackSide
  var StarMap = new THREE.Mesh( geometry2, material2 );
  scene.add( StarMap );

  //animations

        var animate = function () 
            requestAnimationFrame( animate );

            sphere.rotation.y -= 0.002;

            renderer.render( scene, camera );
        ;


        animate();

答案

我设法解决了这个问题,但老实说,我真的不知道为什么我这么做了。我的解决方案是通过photoshop更改图像,这使我相信它与照片的尺寸有关。

如果有人出于某种原因引起了人们的注意,这是从评论变为答案,这是因为我对Stack Overflow没经验

以上是关于Three.js:在将大多数图像加载到球体的背面时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章

three.js 球体几何是不是有大小限制?

Three.js - 围绕某个轴旋转球体

Three.js - 立方体和球体与平面奇怪地剪裁

Three.js渲染质量

Three.js fbx 未正确加载

Three.js 的球体几何位置