2015-06-24 4 views
2

Я читал много блогов/вопросов об этом и не нашел правильного ответа. Я создаю землю в трех. Но каждый раз, когда я сопоставляю свою текстуру и рельефную карту, она не отображается. Также нет никаких консольных ошибок. Он все еще показывает мой свет на сфере, так что сфера все еще существует. Но текстуры не покажут. :(Обертка изображений вокруг сферы

var scene, 
    camera, 
    light, 
    renderer, 
    earthObject; 

var WIDTH = window.innerWidth, 
    HEIGHT = window.innerHeight; 

var angle = 45, 
    aspect = WIDTH/HEIGHT, 
    near = 0.1, 
    far = 3000; 

//Environment 

var container = document.getElementById('container'); 

camera = new THREE.PerspectiveCamera(angle, aspect, near, far); 
camera.position.set(0, 0, 0); 
scene = new THREE.Scene(); 

//light 

scene.add(new THREE.AmbientLight(0x333333)); 

var light = new THREE.DirectionalLight(0xffffff, 1); 
light.position.set(5,3,5); 
scene.add(light); 

var earthGeo = new THREE.SphereGeometry (30, 40, 400), 
    earthMat = new THREE.MeshPhongMaterial(); 

// diffuse map 
earthMat.map = THREE.ImageUtils.loadTexture('http://i317248.iris.fhict.nl/LSTE/globe/Images/globe.jpg'); 

// bump map 
earthMat.bumpMap = THREE.ImageUtils.loadTexture('http://i317248.iris.fhict.nl/LSTE/globe/Images/bump.jpg'); 
earthMat.bumpScale = 8; 


var earthMesh = new THREE.Mesh(earthGeo, earthMat); 
earthMesh.position.set(-100, 0, 0); 
earthMesh.rotation.y=5; 

scene.add(earthMesh); 


camera.lookAt(earthMesh.position); 

//Renderer code. 
var renderer = new THREE.WebGLRenderer({antialiasing : true}); 
renderer.setSize(WIDTH, HEIGHT); 
renderer.domElement.style.position = 'relative'; 

container.appendChild(renderer.domElement); 
renderer.autoClear = false; 
renderer.shadowMapEnabled = true; 

function render() { 
    renderer.render(scene, camera); 
} 

render(); 
+0

вы можете поместить код в [скрипку] (http://jsfiddle.net/) ?! – marcel

+0

https://jsfiddle.net/jmtedel/0amhp2sg/ –

ответ

1

Две проблемы в вашем коде:

  • вы не ждали изображений для загрузки перед визуализацией сцены
  • у вас возникли проблемы политики Междоменной (https://en.wikipedia.org/wiki/Same-origin_policy) поэтому образы реально никогда не загружены
+0

Но если я сделаю это на кубе, мои изображения загрузятся. Почему не загружается на сферу? –

+0

Действительно? Точно такой же код и изображения, просто используя куб вместо сферы? – Shomz

+0

Для куба я использую: 'var geometry = new THREE.BoxGeometry (1, 1, 1); вар материал = новый THREE.MeshLambertMaterial ({ карта: THREE.ImageUtils.loadTexture («изображения/crate2.jpg») }) ' –