Задать вопрос
@ERomulon

Как натянуть текстуру jpg на сферу?

Создал на vue сайт, создал сцену, сферу и тп. Если сфера MeshPhongMaterial и у нее есть к примеру только color, то все отлично работает. Пробую натянуть на нее текстуру земли в jpg, png - результат никаких ошибок, но сцена пустая. Как правильно загрузить и применить текстуру в формате jpg и подобном? Какие правила и ограничения на сам файл, если они есть?

mounted(){
		let canvas = document.getElementById('myscene');
		let width = window.innerWidth;
		let height = window.innerHeight;
		var mouse = new THREE.Vector2(), INTERSECTED;
		let renderer = new THREE.WebGLRenderer({
			canvas: canvas,
			antialias: true,
			alpha: true
		});

		renderer.setPixelRatio(window.devicePixelRatio > 1 ? 2 : 1);
		renderer.setSize(width, height);
		var camera = new THREE.PerspectiveCamera(40, width / height, 1, 1000);
		let texture = new THREE.TextureLoader().load('../assets/earth-small.jpg');
		//SCENE
		let scene = new THREE.Scene();

		let group = new THREE.Group();
		scene.add(group);
		camera.position.set(0, -150, 50);
		camera.lookAt(10, 20, 30);
		var controls = new OrbitControls(camera, renderer.domElement);

		var light = new THREE.AmbientLight( 0x404040 ); // soft white light
		scene.add( light );

		//BODY
		var geometry = new THREE.SphereGeometry( 25, 32, 32 );
		
		var material = new THREE.MeshBasicMaterial( { map: texture } );
		var sphere = new THREE.Mesh( geometry, material );
		scene.add( sphere );

		let time = 0;
		function Render() {
			time++;
			renderer.render(scene, camera);
			window.requestAnimationFrame(Render);
		}
		Render();

		function onResize() {
			renderer.setSize(window.innerWidth, window.innerHeight);
			camera.aspect = (window.innerWidth / window.innerHeight);
			camera.updateProjectionMatrix();
		}
		window.addEventListener('resize', onResize, false);
	}
  • Вопрос задан
  • 99 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы