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:在将大多数图像加载到球体的背面时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章