У меня есть дилемма о трех рендерингах модели импорта [duplicate]

Вы можете использовать:

grep -r "string to be searched"  /path/to/dir

r означает рекурсивный поиск, поэтому он будет искать в указанном пути, а также в его подкаталогах. Это скажет вам имя файла, а также распечатает строку в файле, где отображается строка.

Или команда, аналогичная той, которую вы пытаетесь (пример:) для поиска во всех файлах javascript ( * .js):

find . -name '*.js' -exec grep -i 'string to search for' {} \; -print

Это будет печатать строки в файлах, где отображается текст, но не печатает имя файла.

В дополнение к этой команде, мы также можем написать это: grep -rn «String to search» / path / to / directory / or / file -r: рекурсивный поиск n: номер строки будет отображаться для совпадений

12
задан WestLangley 9 October 2014 в 00:23
поделиться

4 ответа

Самопрозрачность особенно сложна в WebGL и three.js. Вам просто нужно понять проблемы, а затем приспособить свой код для достижения желаемого эффекта.

Вы можете добиться внешнего вида прозрачной сферы в three.js с трюком: Вам нужно отобразить прозрачные сферы два - один с material.side = THREE.BackSide и один с material.side = THREE.FrontSide.

Использование таких методов обычно требуется, если вы хотите, чтобы самопрозрачность без артефактов - особенно если вы разрешаете камере или объекту двигаться.

Вот скрипка: http://jsfiddle.net/unkya/17/

EDIT: Обновлен скрипт до трёх. Js r.71

15
ответ дан WestLangley 22 August 2018 в 22:57
поделиться
  • 1
    Вы можете получить другой тип артефакта, если вы также пересечете два прозрачных объекта ( demo здесь и объяснение от @mrdoob здесь ) – Drew Noakes 17 July 2013 в 16:29
  • 2
    Спасибо за пример, это здорово. Я должен посмотреть, могу ли я позволить отключить сортировку всех объектов в моей сцене. Что касается моих изменений - на какую скрипку вы ссылались? Теперь вы обновили свою скрипту до версии r59, не стесняйтесь удалить ссылку на ту, которую я разместил, поскольку она больше ничего не добавляет. – Drew Noakes 17 July 2013 в 17:10

Сделайте клон исходной сетки и переверните ее нормали; затем сделайте два одинаковых «односторонних» материала для каждого с другим именем. Не самый классный подход, но он работал отлично. Я боролся с той же проблемой, вот что я сделал: P

. Файл .json выглядит так:

    {
"materials":[
    { "name":"ext", "texture":"f_03.jpg", "ambient":[255.0,255.0,255.0], "diffuse":[255.0,255.0,255.0], "specular":[255.0,255.0,255.0], "opacity":0.7 },
    { "name":"int", "texture":"f_03.jpg", "ambient":[255.0,255.0,255.0], "diffuse":[255.0,255.0,255.0], "specular":[255.0,255.0,255.0], "opacity":0.7 }
],
"meshes":[
    {
        "name":"Cylinder001",
        "material":"ext", ...

    {
        "name":"Cylinder002",
        "material":"int", ...
0
ответ дан evilskills 22 August 2018 в 22:57
поделиться

Чтобы правильно отобразить эту сцену с альфа-смешением, треугольники должны отображаться с каждой стороны вперед. Ваша сцена особенно сложна, так как у вас есть один объект внутри другого и рендеринг обеих сторон, для чего потребуется отрисовка части сферы, затем куб, затем остальная часть сферы. Я сомневаюсь, что tr.js (или любая другая библиотека граф сцены) может обрабатывать этот случай.

Аддитивное или субтрактивное смешивание будет работать без сортировки, но выглядит не так хорошо.

0
ответ дан foijord 22 August 2018 в 22:57
поделиться

Как правило, для создания прозрачных объектов вам нужно сортировать их спереди назад (я предполагаю, что three.js уже делает это). Если ваш объект выпуклый (как и оба из них), вы иногда можете получить рендеринг каждого объекта дважды, один раз с gl.cullFace (gl.CCW) и снова с gl.cullFace (gl.CW). Например, если куб находится внутри сферы, в которой вы эффективно выполняете

gl.enable(gl.CULL_FACE);
gl.cullFace(gl.CW);
drawSphere();  // draws the back of the sphere
drawCube();    // draws the back of the cube
gl.cullFace(gl.CCW);
drawCube();    // draws the front of the cube.
drawSphere();  // draws the front of the sphere.

, я понятия не имею, как это сделать в файле three.js

. Это только обрабатывает объекты, которые выпуклый и не пересекающийся (один объект целиком лежит внутри другого).

4
ответ дан gman 22 August 2018 в 22:57
поделиться
  • 1
    Да, three.js сортирует объекты соответственно и, как вы объяснили, делая передние и задние отдельные объекты, они могут получить прибыль от сортировки. Спасибо, что указали ограничение на выпуклые и непересекающиеся объекты. – arose 5 November 2012 в 22:56
Другие вопросы по тегам:

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