2013-06-05 2 views
2

EDIT: Вы не можете добавить FOG после визуализации сцены, потому что он должен выполнять вычисления с шейдерами.Используя THREEJS, я пытаюсь переключиться на туман в сцене

  • ЕСЛИ вы это сделаете, это покажет машину, потому что все шейдеры должны быть перезаписаны.
  • ЕСЛИ ВЫ НУЖНЫ туман, лучше вычислить, если вы визуализируете его с туманом, но установите плотность на 0 (или 0,01), чтобы таким образом не было реального видимого тумана. Хорошей причиной для этого является то, что вычисления FOG являются СОЗДАННЫМИ, вам просто нужно будет регулировать плотность и загружать страницу.

ТОК ПЛАН: Мне нужно, чтобы выяснить, как изменить плотности. Я просматриваю объект FOG и сцену, чтобы увидеть, что я могу найти.

Оригинал Вопрос:

У меня есть тумблер включения/выключения, что при нажатии, предполагают, чтобы добавить/удалить туман со сцены, но кажется, что оно не добавить любой туман на сцену. Я запускаю scene.fog на консоли, чтобы увидеть, что у него это есть.

Я подумал, что мы могли бы просто добавить и удалить его, как то, что я сделал. Есть ли что-то другое, которое зависит от реализации тумана? Я пытался работать с http://mrdoob.github.io/three.js/examples/webgl_materials_cubemap_dynamic.html, чтобы увидеть, как работает туман, но я не видел никаких других строк, чем то, что я сделал. MAYBE Мне нужно сделать какое-то обновление сцены после настройки сцены, как я?

function toggledata(){ 
    var toggle = $(this).val(); // 'on' or 'off' 
    if (toggle == 'on') 
    { 
    scene.fog = new THREE.Fog(0xffffff, 10, 60); 
    scene.fog.color.setHSL(0.51, 0.6, 0.6); 
    } 
    else if (toggle == 'off') 
    { 
    scene.fog = null; 
    } 
} 

//GLOBALS 
var scene, container, etc. 

function init() 
{ 
    container = $('#MODELDIV'); 

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

    // CAMERA 
    var SCREEN_WIDTH = container.width(); 
    var SCREEN_HEIGHT = container.height(); 

    var VIEW_ANGLE = 45; 
    var ASPECT = SCREEN_WIDTH/SCREEN_HEIGHT; 
    var NEAR = 0.1; 
    var FAR = 20000000; 

    camera = new THREE.PerspectiveCamera(VIEW_ANGLE, ASPECT, NEAR, FAR); 

    scene.add(camera); 

    camera.position.set(3043.0732, 98.8883, 141.0916); 

    camera.lookAt(3043.0732, 98.8883, 41.0916); 
    //CAMERA_LIST.push(camera); 

    renderer = new THREE.WebGLRenderer({ antialias: true }); 
    renderer.setSize(SCREEN_WIDTH, SCREEN_HEIGHT); 
    renderer.setClearColor(0x000000); 

    renderer.sortObjects = true; 

    container.append(renderer.domElement); 

    controls = new THREE.OrbitControls(camera, renderer.domElement); 

    var directionalLight = new THREE.DirectionalLight(0xffffff); 
    directionalLight.position.set(1, 1, 1).normalize(); 
    scene.add(directionalLight); 
    LIGHT_LIST.push(directionalLight); 

    var ambientLight = new THREE.AmbientLight(0xbbbbbb); 
} 

ответ

3

См https://github.com/mrdoob/three.js/wiki/Updates

Туман не может быть легко удалена со сцены, как он встроен в материальные шейдеры на первый рендер.

Вы можете, однако, установить интенсивность на 0, чтобы получить аналогичный внешний вид.

+0

Положите эту попытку на настоящую оперативность, чтобы подтвердить, и немного потрудились создать туман – Fallenreaper

0

ближние и дальние параметры тумана является необычным. Попробуйте установить эти значения для некоторых других (гораздо больших) значений, например 0,1 для близкого расстояния и 2000 для далеких.

+0

необычные размеры были попыткой сделать FOG мгновенно отображаться в видовом экране, так как на экране отображается много объектов. – Fallenreaper

Смежные вопросы