forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   ScaleEntity & ScaleMesh (http://forum.boolean.name/showthread.php?t=4835)

IGR 23.10.2007 16:20

ScaleEntity & ScaleMesh
 
Вижу разницу между етими ф-ями, но понять ее не могу !!

ScaleEntity - меняет размер Entity !!
ScaleMesh - меняет размер Mesha !!
а разницы , если Entity у меня Mesh ??

и еще :
если ScaleEntity в цикле, то все норм скалит
ScaleEntity man,1,1,1

если ScaleMesh в цикле, то скалит каждый цыкл
ScaleMesh man,1,1,1
и потом получаем размер меша NaN !!

помогите разобраться !!

ЛысыЙ_Чук-Иванчук 23.10.2007 18:06

Re: ScaleEntity & ScaleMesh
 
Разница между ними очень велика, а именно- если скалить размер объекта как ЕНТИТИ то размер самого меша не меняется, т.е. меняется размер пивота на котором крепиться меш(вродь так=)) а када меняеш размер мешу то он уже изменяет позиции вершин, для чего ето нада- много где нада, особенно если ты работаеш с перебором треуголдьников + их позициями, например тени, физика ....

IGR 23.10.2007 18:22

Re: ScaleEntity & ScaleMesh
 
пойняв !! а почему тогда это:
Цитата:

если ScaleEntity в цикле, то все норм скалит
ScaleEntity man,1,1,1

если ScaleMesh в цикле, то скалит каждый цыкл
ScaleMesh man,1,1,1
и потом получаем размер меша NaN !!

tormoz 23.10.2007 18:23

Re: ScaleEntity & ScaleMesh
 
меш - это сама сетка модели в памяти
ентити - ее "отражение", то есть тот же меш но перемноженый на матрицы скейла поворота перемещения.
От одного меша может быть множество "отражений" и у каждого свои параметры.

Damp 24.10.2007 13:40

Re: ScaleEntity & ScaleMesh
 
Еще могу добавить свои смутные сомнения, возможно у меня параноя, но кажется соскаленные мэши рэндэрятся чуть быстрее чем также сплющенные энтити.

tormoz 24.10.2007 16:42

Re: ScaleEntity & ScaleMesh
 
одинаково

IGR 24.10.2007 19:36

Re: ScaleEntity & ScaleMesh
 
я так и не получил прямого ответа на вопрос почему, меш скалится каждый цыкл, а entity тоже, но только это не изменяет видимые размеры меша/ентити ??

jimon 24.10.2007 20:25

Re: ScaleEntity & ScaleMesh
 
как я помню :
ScaleMesh bla,1.1,1.1,1.1 - домножить все координаты меша на 1.1
ScaleEntity bla,1.1,1.1,1.1 - домножить все координаты меша на 1.1
тоесть в первом случае они в цикле будут изменятся
во втором - нет

IGR 24.10.2007 20:34

Re: ScaleEntity & ScaleMesh
 
Цитата:

ScaleMesh bla,1.1,1.1,1.1 - домножить все координаты меша на 1.1
ScaleEntity bla,1.1,1.1,1.1 - домножить все координаты меша на 1.1
тоесть в первом случае они в цикле будут изменятся
во втором - не
это я тож понимаю, но почему так происходит ??
из-за разницы самих функций в структере или че ??

jimon 24.10.2007 21:34

Re: ScaleEntity & ScaleMesh
 
Меш - масив координат и масив сойденений етих координат
Ентети - ССЫЛКА на ети координаты

к примеру у тебя есть mesh1 и entity1,entity2 которые ссылаются на mesh1

ScaleEntity entity1,2,2,2
ScaleEntity entity2,3,3,3
тут entity2 увеличится в два раза, entity3 увеличится в 3 раза
если опять вызвать ети же команды - ничего не произойдет
потому что оригинальный mesh1 увиличат опять в два раза ..
получим тоже самое

при ScaleMesh mesh1,2,2,2
сам mesh1 увеличится в 2 раза
и entity1,entity2 увеличатся в 2 раза !

Platon 25.10.2007 03:55

Re: ScaleEntity & ScaleMesh
 
Да вы не так ему обьясняете :)

IGR

Представь что Entity это мат. матрица, а Mesh - это набор точек в пространстве

Когда ты скейлишь Mesh - координаты всех точек домножаются и изменяют свои положения
При следующем вызове координаты опять домножаются и опять изменяют свое положение, т.е.
- 1.0 * 0.5 = 0.5
- 0.5 * 0.5 = 0.25
- 0.25 * 0.5 = 0.125

А когда ты скелишь Entity - изменяется мат. матрица. А как известно, при отрисовке меша
координаты его точек умножаются на эту матрицу конкретно для рендеринга (локально), т.е.
точки меша не меняют своего положения

Вот формула скейлинга матрицы 4x4
Код:

[x  0  0  0]
[0  y  0  0]
[0  0  z  0]
[0  0  0  1]

Как видишь - здесь нет умножения, просто присвоение значения, поэтому с каждым вызовом размер не меняется, т.е
- 1.0 = 0.5 = 0.5
- 0.5 = 0.5 = 0.5
- 0.5 = 0.5 = 0.5

Теперь понятно?:)

tormoz 25.10.2007 05:13

Re: ScaleEntity & ScaleMesh
 
- Папа, ты сейчас с кем разговаривал ? (с)

Damp 25.10.2007 13:07

Re: ScaleEntity & ScaleMesh
 
И еще такой вопрос:
-если использовал ScaleEntity не значит ли это, что энтити будет скалится каждый раз перед рэндэром, т.е. не добавляет ли ScaleEntity новых мат.операций над энтити (матрицей) или энтити так и так какбы скалится под 1, даже без использования ScaleEntity?
---
т.е. вопрос в конечном итоге какбы о том кто скалит энтити dx или сам блиц?

Platon 25.10.2007 13:29

Re: ScaleEntity & ScaleMesh
 
В Блице ты трансформируешь матрицу ентити, а DX уже каждый раз перед выводом меша, устанавливает свою матрицу трансформации (мировую) по той матрице которая у этого ентити. Т.е. неважно скейлил ты матрицу или нет, все равно трансформация будет производиться.

IGR 25.10.2007 14:08

Re: ScaleEntity & ScaleMesh
 
Цитата:

Теперь понятно?
теперь понятно !! :)
при scaleentity просто устанавливается новый размер и если значение скала не изменилось, то мы не видим изминений !!
а в случае с scalemesh, там координаты каждой точки меша домножаются и по этому с каждым цыклом он увеличевается !!

всё ясно !! спасибо !!


Часовой пояс GMT +4, время: 16:38.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot