Three.js вставить изображение - PullRequest
10 голосов
/ 15 марта 2012

Я пытаюсь прикрепить простое изображение к сетке PlaneGeometry, но, похоже, оно не работает.

window.onload = function(){


        var renderer = new THREE.WebGLRenderer();
        renderer.setSize(window.innerWidth, window.innerHeight);
        document.body.appendChild(renderer.domElement);

        // camera
        var camera = new THREE.PerspectiveCamera(95, window.innerWidth / window.innerHeight, 1, 1000);
        camera.position.y = -250;
        camera.position.z = 400;
        camera.rotation.x = 45 * (Math.PI / 180);

        // scene
        var scene = new THREE.Scene();

        var img = new THREE.MeshLambertMaterial({
            map:THREE.ImageUtils.loadTexture('img/front.jpg')
        });
        // plane
        var plane = new THREE.Mesh(new THREE.PlaneGeometry(200, 200),img);
        plane.overdraw = true;
        scene.add(plane);
         // add subtle ambient lighting
        var ambientLight = new THREE.AmbientLight(0x555555);
        scene.add(ambientLight);

        // add directional light source
        var directionalLight = new THREE.DirectionalLight(0xffffff);
        directionalLight.position.set(1, 1, 1).normalize();
        scene.add(directionalLight);

        // create wrapper object that contains three.js objects
        var three = {
            renderer: renderer,
            camera: camera,
            scene: scene,
            plane: plane
        };
        renderer.render(scene,camera);
    };

Это мой полный файл JavaScript с холстом 580x300

.

Я вижу только черный квадрат, когда запускаю его. есть идеи? Спасибо!

вот мой справочник для тех, кому это нужно:

http://www.html5canvastutorials.com/webgl/html5-canvas-webgl-texture-with-three-js/

Ответы [ 2 ]

11 голосов
/ 15 марта 2012

После загрузки последнего тега с github и игры с примерами стало ясно, что виноват CORS . Если я открываю Chrome Developper Tools и смотрю на консоль, появляется много сообщений об ошибках:

Cross-origin image load denied by Cross-Origin Resource Sharing policy.

Если вы используете Chrome, запустите его с флагом -allow-file-access-from-files

Протестировано с Chrome 17.0.963.79.

window.onload = function(){

    var renderer = new THREE.WebGLRenderer();
    renderer.setSize(window.innerWidth, window.innerHeight);
    document.body.appendChild(renderer.domElement);

    // camera 
    var camera = new THREE.PerspectiveCamera(95, window.innerWidth / window.innerHeight, 1, 1000); 
    camera.position.y = -250; 
    camera.position.z = 400; 
    camera.rotation.x = 45 * (Math.PI / 180); 

    // scene 
    var scene = new THREE.Scene();
    scene.add(camera); //ADDED

    var img = new THREE.MeshBasicMaterial({ //CHANGED to MeshBasicMaterial
        map:THREE.ImageUtils.loadTexture('img/front.jpg')
    });
    img.map.needsUpdate = true; //ADDED

    // plane
    var plane = new THREE.Mesh(new THREE.PlaneGeometry(200, 200),img);
    plane.overdraw = true;
    scene.add(plane);

     // add subtle ambient lighting
    var ambientLight = new THREE.AmbientLight(0x555555);
    scene.add(ambientLight);

    // add directional light source
    var directionalLight = new THREE.DirectionalLight(0xffffff);
    directionalLight.position.set(1, 1, 1).normalize();
    scene.add(directionalLight);

    // create wrapper object that contains three.js objects
    var three = {
        renderer: renderer,
        camera: camera,
        scene: scene,
        plane: plane
    };
    renderer.render(scene,camera);
};
0 голосов
/ 18 июня 2013

Изменить вращение плоскости.

попробуйте это.

Plane.rotation.x = (-Math.PI / 2);
Plane.rotation.z = (-Math.PI / 2);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...