Цитата:
как это? ведь при изменениях в сцене надо перестроить часть BSP дерева, начиная с наинизшего узла, охватывающего измененные части. Если сцена сильно меняется, скажем морская поверхность во время шторма, перестраивать придется все BSP, а это чревато, или вы имели ввиду простую сортировку?
|
У меня одно название BSP, принцип похож, но дерево полностью ориентировано для динамических сцен (это не означает, что для статических сцен оно не подходит).
Дерево строится для каждого объекта отдельно, тем самым перестройку всего дерева делать не надо. Пока не буду описывать весь принцип, когда введу в окончательную версию напишу статью.
Цитата:
Динамические объекты или статичные разницы для Infinity3d нет.
|
это утверждение больше относится к быстрым типам сортировки, но и все деревья ориентированы на динамические сцены. Кстати Z-сортировки у меня вообще нет (почему то все с презрением отзываются о ней - это всего лишь алгоритм для определенных целей. Плохих алгоритмов нет, все для своих целей).
Цитата:
как я понял у вас для перспективной коррекции есть триангуляция, или фильтр для других нужд служит?
|
Есть понятие PerspectiveDetail если указывать значение PerspectiveDetail.PIXEL, тогда включится пиксельная коррекция, при других значения будет триангуляция.
Код AS3:
private function setupCamera():void
{
this.camera = new Camera3D("Camera0");
this.camera.rotationX = -90;
this.camera.fov = 90;
this.camera.maxFov = 90;
this.camera.minFov = 30;
this.camera.orthographic = false;
this.camera.radiusVector = new Vector3D(330, 330, 330);
this.camera.renderFilter = RenderFilter.BASE_RENDER;// существуют: FAST_RENDER, BASE_RENDER, BSP_RENDER, QUAD_RENDER
this.camera.perspectiveDetail = PerspectiveDetail.BEST;// триангуляция
this.camera.perspectiveDetail = PerspectiveDetail.PIXEL;// пиксельная коррекция
this.scene.root.addChild(this.camera);
}
Цитата:
П.С. к вопросу о больших текстурах. Я как-то делал fill-rate test текстурами 32x32 и 512x512. Текстура рисовалась через MovieClip.beginBitmapFill, с заранее посчитаной матрицей преобразования, сухой остаток - разница в fps не превышала 1%, т.е. для производительности критично, скорее, не разрешение текстуры а площадь ею закрашиваемая. Тут надо оговориться, что тестилось оно на 8-ке, но к.м.к. в 9-ке ситауция изменилась не сильно.
|
Разумеется площадь влияет на производительность, для этого и вводятся различные алгоритмы удаление перекрываемых полигонов.
Кстати про память расскажу подробно, что бы больше не было вопросов.
К примеру есть у нас текстура 1024х1024, что делает flash - он создает(мип - мэпинг) из этой текстуры 512х512 затем 256х256 и так далее. Таким образом мы храним все вариации текстуры. Вот поэтому и тратится столько памяти. Есть вариант отключения, надо не придерживаться размеров кратных двойке. Достаточно сделать текстуру 1023х1023 и мип - мэпинг'а не будет, но работать все будет медленнее.
П.С. Просьба задавать вопросы о движке на блоге
http://infinity3d-engine.com/ru/blog/ , не мучайте меня ответами на одни и те же вопросы в разных темах и на разных форумах :). Заранее спасибо.