Пользователь пока ничего не рассказал о себе

Достижения

Все достижения (3)

Наибольший вклад в теги

Все теги (17)

Лучшие ответы пользователя

Все ответы (19)
  • Как в Three.js отрисовать изображение по верх всего?

    sozercanie_kosmosa
    @sozercanie_kosmosa
    Для этого нужно создать еще одну камеру которую мы не будем двигать:
    otherCamera = new THREE.PerspectiveCamera( fov, width / height, near, far );
    её необходимо направить прямо на объект.
    Создаем еще одну сцену:
    var otherScene = new THREE.Scene();
    добавить на эту сцену объект, который должен быть всегда сверху:
    otherScene.add(objAlwaysOnTop);
    на объект можно натянуть текстуру с картинкой.
    Далее необходимо вставить в место, где происходит рендеринг это:
    enderer.clear();  // отчищаем все буферы
    renderer.render(mainScene, camera); // рендерим главную сцену
    renderer.clear(false, true, false); // отчищаем только буфер глубины
    renderer.render(otherScene, otherCamera);// рендерим статичную сцену
    Все!

    Есть еще способ который гораздо проще:
    var texture = new THREE.ImageUtils.loadTexture( 'images/pic.jpg' );
    	texture.wrapS = texture.wrapT = THREE.RepeatWrapping;
    	texture.repeat.set( 0.5, 0.5 );
    	var spriteMaterial = new THREE.SpriteMaterial( {map: texture, useScreenCoordinates: true, alignment: THREE.SpriteAlignment.topLeft } );
    	sprite = new THREE.Sprite( spriteMaterial );
    	sprite.scale.set(100,100,1.0);
    	sprite.position.set( 0, 0, -1 );
    	mainScene.add( sprite );


    от 30.08.2014 последний способ для последних версий Three.js к сожалению уже не актуален.
    Ответ написан
  • Как убрать меридианы и параллели в сфере на three.js?

    sozercanie_kosmosa
    @sozercanie_kosmosa
    уважаемый Fraideron, я осознал вашу проблему, в полном объеме, и настоятельно рекомендую, ...sicMaterial({map:texture_earth, overdrav:tru... исправить на overdraw и будет все, как просили, исчезнет wireframe - эффект. Так же можно отказаться от CanvasRenderer в пользу WebGLRenderer
    Ответ написан
  • Где найти больше текстовой информации по three.js?

    sozercanie_kosmosa
    @sozercanie_kosmosa
    из исходников https://github.com/mrdoob/three.js
    можно расписать структуру, её особенности, ведь эта библиотека-абстракция над WebGL тем и хороша, что достаточна проста для освоения, а спектр задач которые она способна решить просто поражает, ведь создавая приложения по средствам three.js мы используем аппаратные своего компьютера, а это в свою очередь открывает большие вычислительные возможности(шейдерные программы)

    threejs.org
    threejs.org/docs
    threejs.org/examples
    stemkoski.github.io/Three.js
    Ответ написан
  • Как сделать видимый конус света из прожектора (по типу того, которым вызывают Бетмена)?

    sozercanie_kosmosa
    @sozercanie_kosmosa
    Elfrey,
    тут как раз используется то

    в этом примере по полной используются шейдеры, если я вас правильно понял,
    то в самом простом варианте будет достаточно нарисовать конус света выходящего из прожектора по средствам заранее созданного объекта типа конус с наложенным на него материалом желтого цвета с полупрозрачностью, без всяких шейдеров например так:

    geomLightCone = new THREE.CylinderGeometry( 0, 30, 100, 20, 4 );
    material = new THREE.MeshBasicMaterial( {
    				color: 0xFFFF00, 
    				opacity: 0.5, 
    				visible: true} );
    
    meshLight = new THREE.Mesh(geomLightCone, material);
    scene.add(meshLight);


    ...так же необходимо постоянно отслеживать положение луча в зависимости от положения прожектора.

    ps возможно я ошибаюсь, но отслеживать положение луча не обязательно, достаточно лишь в момент инициализации объектов на сцене поместить его в нужное место, а затем
    вместо:
    scene.add(meshLight);
    добавить к объекту "прожектор", объекта "луч света" так:
    projectorMesh.add(meshLight);
    Ответ написан
  • Можно ли растянуть по координатам на сферу многоугольник в three.js?

    sozercanie_kosmosa
    @sozercanie_kosmosa
    думаю, если представить для примера, что объект который мы хотим натянуть на сферу плоская пластина PLANE 10х10 вершин

    1) что бы положить плоскость на сферу нужно пересчитать её координаты в соответствии
    с уравнением сферы R*R = X*X+Y*Y+Z*Z; допустим PLANE лежит в плоскости XY, тогда искривлять мы её будем по Z, вот этим уравнением Z=Math.sqrt(R*R-X*X-Y*Y); подставляя в него координаты вершин PALNE и радиус сферы на выходе получаем Z - координату которой нужно заменить координату в расчитываемой вершине PLANE

    2) что бы растянуть как мне кажется нужно к примеру выбирать 5-ть произвольных вершин на плоскости и 5-ть вершин на сфере в которые должны перейти вершины плоскости и соответственно растянуть её. Затем задать этим вершинам вес.
    Далее используя сферическую систему коорди... сдвинуть исходные вершины к результатирующим таким образом что бы сдвигаемая вершина увлекала за собой рядом стоящие вершины соответственно градиента веса распространяемого на них(чем дальше вершина от основной сдвигаемой тем меньше на неё воздействие)

    ps несколько абстрактное описание, но это мое видение этой проблемы наверняка есть способ более простой реализации, если этот вариант не подойдет, задайте вопрос на gamedev.ru думаю там можно получить более компетентную рекомедтацию-рецепт
    Ответ написан

Лучшие вопросы пользователя

Все вопросы (17)