![]() |
|
||||||||||
|
|||||
|
Lorem ipsum
|
Котяра, ты наверное невнимательно читал мой пост выше.
В том то и дело, что ошибки округления мы исключаем. Какие еще варианты, кроме полнолуния? =)
__________________
Поймай яблоко 2! |
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
Ну почему исключаем? как раз в них и дело.
Цитата:
__________________
Отряд Котовскага Последний раз редактировалось Котяра; 17.08.2010 в 15:26. |
|
|||||
|
Lorem ipsum
|
Давай абстрагируемся от подсчета координат точек. Анализируем только сам алгоритм прорисовки треугольника. Даже нет — линии.
Имеются две точки (x1, y1), (x2, y2). Максимальной точности со всеми там погрешностями и как никогда "криво" посчитанные 4 числа типа Number — неважно. Как можно нарисовать две линии из первой точки во вторую, так чтобы они не совпали? Это ж спецом надо монетку бросать в каких-то местах алгоритма, чтобы случайным образом выстроить точки и подрисовать antialiasing как-то иначе. И все же, еще раз перечитай пост про мои пробы в инструменте free transform, потому что ты заставляешь меня повторяться — меня это удивляет =) Добавлено через 5 минут А вот с этого места поподробнее =) Я всегда полагал, что 3d модель упрощенно можно записать как массив всех точек и массив треугольников, где каждый содержит в себе всего лишь указатель на точки, на которые он опирается. И при просчете некая Point3D преобразуется в Point2D лишь один раз. И при прорисовке двух (уже плоских) смежных треугольников у них по прежнему есть одна грань, которая точно проведена из ТЕХ ЖЕ точек.
__________________
Поймай яблоко 2! |
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
Цитата:
Цитата:
Цитата:
__________________
Отряд Котовскага |
|
|||||
|
Lorem ipsum
|
Обоснуй. Ты просто продублировал утверждение, которое я аргументированно называю ложным.
__________________
Поймай яблоко 2! |
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
Я не увидел аргументов.
Цитата:
3d модель - это набор полигонов, точки у них собственные, соответственно они могут отличаться для соседних полигонов при проецировании.
__________________
Отряд Котовскага Последний раз редактировалось Котяра; 17.08.2010 в 16:10. |
|
|||||
|
Lorem ipsum
|
Это плохо тебя характеризует ) пост №13 прочитай полностью.
И для того, чтобы меньше было бессмысленных/необоснованных ответов с твоей стороны почитай о том, как рисуются треугольники в самом Flash. Пояснение очевидных фактов отвлекает от сути вопроса. Добавлено через 9 минут Цитата:
Предполагаемый тобой метод описания модели будет по меньшей мере неоптимален как для хранения, так и для визуализации. Чтобы два смежных треугольника не опирались на 2 общие точки — это надо еще так смоделировать специально! Так что предлагаю вернуться к загадке о том, откуда берутся "прострелы".
__________________
Поймай яблоко 2! |
|
|||||
|
Цитата:
- есть точки, описываемые тремя координатами каждая - есть текстурные координаты, описываемые двумя цифрами - есть полигоны, описываемые тремя индексами точек и тремя индексами текстурных координат @zebestov Зачастую в целях повышения производительности во flash-движках различные части модели рендерятся в разные контейнеры - отсюда возникают искажения. В свое время показывал silin'у свои эксперименты - если, образно говоря, делить модель на слои (по "глубине" ее частей относительно плоскости экрана) и рендерить по несколько полигонов в один Shape - то просветов никаких нет. Если же рендерить один полигон в один контейнер - то появляются косяки
__________________
...вселенская грусть |
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
это из nd3d - смотри коммент про smoothing
public static function renderUV(stage:Sprite, material:Material, a:Vertex, b:Vertex, c:Vertex, uvMap:Array, colorFactor:Number, ambientColor:uint):void { var x0:Number = a.screenX; var y0:Number = a.screenY; var x1:Number = b.screenX; var y1:Number = b.screenY; var x2:Number = c.screenX; var y2:Number = c.screenY; var texture:BitmapData = material.texture; var w:Number = texture.width; var h:Number = texture.height; var u0:Number = uvMap[0].u * w; var v0:Number = uvMap[0].v * h; var u1:Number = uvMap[1].u * w; var v1:Number = uvMap[1].v * h; var u2:Number = uvMap[2].u * w; var v2:Number = uvMap[2].v * h; var sMat:Matrix = new Matrix(); var tMat:Matrix = new Matrix(); tMat.tx = u0; tMat.ty = v0; tMat.a = (u1 - u0) / w; tMat.b = (v1 - v0) / w; tMat.c = (u2 - u0) / h; tMat.d = (v2 - v0) / h; sMat.a = (x1 - x0) / w; sMat.b = (y1 - y0) / w; sMat.c = (x2 - x0) / h; sMat.d = (y2 - y0) / h; sMat.tx = x0; sMat.ty = y0; tMat.invert(); tMat.concat(sMat); var smoothing:Boolean = material.smoothed; // check if points are not to close to each other, disable smoothing // beginBitmapFill draw bug?! if(smoothing) { var dx:Number = x1 - x0; var dx2:Number = x2 - x1; var dy:Number = y1 - y0; var dy2:Number = y2 - y1; if(Math.abs(dx / dy - dx2 / dy2) < 1) { smoothing = false; } } var gfx:Graphics = stage.graphics; gfx.beginBitmapFill(texture, tMat, false, smoothing); gfx.moveTo(x0, y0); gfx.lineTo(x1, y1); gfx.lineTo(x2, y2); gfx.lineTo(x0, y0); gfx.endFill();
__________________
Отряд Котовскага Последний раз редактировалось Котяра; 17.08.2010 в 16:50. |
|
|||||
|
Lorem ipsum
|
gloomyBrain, вот это уже интересно, хотя по-прежнему непонятно.
Т.е. другими словами если я нарисую два треугольника ABC и CBD в разных контейнерах, то между ними будет вероятен просвет, а если в один — то нет? Котяра, посмотрел. Мне страшно за людей, которые смело без проверки делят на число, которое может вполне себе запросто оказаться нулем =) Но в любом случае я не понял, что они там проверяют в этом условии? Но главное в другом — тут не идет речь о разных точках для смежных поликов. Они там работают с опорными точками отдельно взятого полигона. UPD: и шота это им нифига не помогло: http://www.nulldesign.de/nd3d/teaser/ =) простреливает.
__________________
Поймай яблоко 2! Последний раз редактировалось Zebestov; 17.08.2010 в 17:22. |
![]() |
![]() |
Часовой пояс GMT +4, время: 09:47. |
|
|
« Предыдущая тема | Следующая тема » |
|
|