Three.js: Как сделать текстуры резкими на сетчатке?

Созданный на 24 окт. 2012  ·  16Комментарии  ·  Источник: mrdoob/three.js

Поэтому я только что обновил свой ноутбук до MacBook с дисплеем Retina, и хотя я использую текстуры высокого разрешения с повторением, они выглядят очень размытыми.

Итак, мне интересно, что мне делать, чтобы решить эту проблему?

Question

Самый полезный комментарий

Просто оставьте здесь комментарий для всех, кто это найдет, потому что я чуть не сошел с ума, пытаясь найти ответ, и Google продолжал приводить меня сюда: у меня была точно такая же проблема, но у меня было очень простое решение, я просто установил devicePixelRatio в рендерере (r72):

renderer.setPixelRatio(window.devicePixelRatio ? window.devicePixelRatio : 1);

_Отметим, что установка devicePixelRatio при создании объекта не работает. Может ошибка? _

Все 16 Комментарий

Анизотропия, вероятно, то, что вам нужно.
http://mrdoob.github.com/three.js/examples/webgl_materials_texture_anisotropy.html

Хорошо, это устранило мою проблему с повторяющимися текстурами, спасибо :) Однако это не сработало для неповторяющихся текстур, есть идеи, как это можно исправить?

Им наверное нужна сила двух текстур?

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

Присмотревшись к моей повторяющейся текстуре, я вижу, что при установке максимальной анизотропии качество значительно улучшилось, текстура все еще не такая резкая, как должна быть.

Трудно сказать, что происходит, не увидев примера или хотя бы снимков экрана, но вы можете взглянуть на это:

http://www.khronos.org/webgl/wiki/HandlingHighDPI

классная ссылка

Просто оставьте здесь комментарий для всех, кто это найдет, потому что я чуть не сошел с ума, пытаясь найти ответ, и Google продолжал приводить меня сюда: у меня была точно такая же проблема, но у меня было очень простое решение, я просто установил devicePixelRatio в рендерере (r72):

renderer.setPixelRatio(window.devicePixelRatio ? window.devicePixelRatio : 1);

_Отметим, что установка devicePixelRatio при создании объекта не работает. Может ошибка? _

_Отметим, что установка devicePixelRatio при создании объекта не работает. Может ошибка? _

Это было удалено некоторое время назад.

@mrdoob , @greggman : К вашему сведению, совсем не ясно, нужно ли вызывать renderer.setPixelRatio _before_, вызывая renderer.setSize .

@mietek На самом деле, я думаю, что это могло быть исправлено в dev уже случайно ...

совсем не ясно, нужно ли вызывать renderer.setPixelRatio перед вызовом renderer.setSize.

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

screen shot 2016-01-24 at 19 15 50

и вот как это выглядит в ipad:

screen shot 2016-01-24 at 19 21 05

Как видите, прямоугольник имеет правильный размер, но фактическое окно просмотра в 2 раза больше.

все выглядит правильно в симуляторе Chrome с dpr = 2, но на ipad это не так.

@makc у вас есть ссылка?

[удалено]

Что-то еще происходит ...

screen shot 2016-01-24 at 19 12 49

Используя инструменты разработчика Safari, я изменил style="width: 418px на style="width: 408px и обратно, и все выглядит так, как должно. Бьюсь об заклад, есть и другие проблемы с правилами css.

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

        setTimeout (function () {
            renderer.domElement.style.width = (parseInt (renderer.domElement.style.width) - 1) + 'px';
            setTimeout (function () {
                renderer.domElement.style.width = (parseInt (renderer.domElement.style.width) + 1) + 'px';
            }, 0);
        }, 0);

вообще не работало. назад к чертежной доске ...

Была ли эта страница полезной?
0 / 5 - 0 рейтинги