|
|
|
DirectX вращение камеры вокруг центра
|
|||
|---|---|---|---|
|
#18+
2 Kokon: Зачем так сложно? Попробуйте проще: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. (код не компилировал) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2013, 04:44 |
|
||
|
DirectX вращение камеры вокруг центра
|
|||
|---|---|---|---|
|
#18+
Пётр Седов,как все просто оказалось))) Спасибо, работает как надо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2013, 08:28 |
|
||
|
DirectX вращение камеры вокруг центра
|
|||
|---|---|---|---|
|
#18+
2 Kokon: Кстати, если вас смущает моя реализация функции rotate, то можете попробовать такую: Код: c# 1. 2. 3. 4. (код не компилировал) Вроде должно работать так же, только насчёт минуса перед углом не уверен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2013, 03:32 |
|
||
|
DirectX вращение камеры вокруг центра
|
|||
|---|---|---|---|
|
#18+
Пётр Седов, да меня то формула не смущает. Просто я ее не понимаю. Если не лень объясните пожалуйста. А в ее сами вывели или где-то она расписана? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2013, 13:38 |
|
||
|
DirectX вращение камеры вокруг центра
|
|||
|---|---|---|---|
|
#18+
Пётр Седов, кстати не знаете, что можно почитать об архитектуре 3D приложений? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2013, 17:18 |
|
||
|
DirectX вращение камеры вокруг центра
|
|||
|---|---|---|---|
|
#18+
2 Kokon: KokonПётр Седов, да меня то формула не смущает. Просто я ее не понимаю. Если не лень объясните пожалуйста. А в ее сами вывели или где-то она расписана?Сейчас уже не помню точно, но скорее всего поворот точки вокруг произвольной оси я взял из книги «Advanced Animation and Rendering Techniques» (авторы: Alan Watt, Mark Watt): (в первом абзаце возможно имеется в виду «of an amount θ about an axis n ») 15 Overview and low-level motion specification ... 15.3 Motion control ... 15.3.8 Parametrization of orientation ... Angular displacement We define orientation as an angular displacement given by ( θ , n ) of an amount about an axis n . Just as we did for Euler angle notation, we shall derive the rotational matrix in terms of this new notation, so instead of R ( θ 1 , θ 2 , θ 3 ) we write R ( θ , n ). Consider the angular displacement acting on a vector r taking it to position Rr as shown in Figure 15.20. The problem can be decomposed by resolving r into components parallel to n , r ∥ , which by definition remains unchanged after rotation, and perpendicular to n , r ⊥ in the plane passing through r and Rr . r ∥ = ( n · r ) n r ⊥ = r - ( n · r ) n r ⊥ is rotated into position Rr ⊥ . We construct a vector perpendicular to r ⊥ and lying in the plane. In order to evaluate this rotation, we write: V = n × r ⊥ = n × r So Rr ⊥ = (cos θ ) r ⊥ + (sin θ ) V hence Rr = Rr ∥ + Rr ⊥ = Rr ∥ + (cos θ ) r ⊥ + (sin θ ) V = ( n · r ) n + cos θ ( r - ( n · r ) n ) + (sin θ ) n × r = (cos θ ) r + (1 - cos θ ) n ( n · r ) + (sin θ ) n × r Мой код : Пётр Седов Код: plaintext 1. 2. 3. 4. 5. 6. 7. Не знаю, как у вас с английским, в общем там ключевой момент в том, что вектор r (который надо повернуть) разбивается на 2 части: r = r ∥ + r ⊥ r ∥ параллелен оси вращения, r ⊥ перпендикулярен. Нам надо получить Rr , и поскольку вращение -- линейный оператор, то: R ( r ∥ + r ⊥ ) = Rr ∥ + Rr ⊥ С параллельной частью всё просто: Rr ∥ = r ∥ . С перпендикулярной частью чуть посложнее, похоже на полярные координаты: Rr ⊥ = cos θ r ⊥ + sin θ V . Они там не пишут явно, но имеют в виду: * Ось вращения проходит через начало координат (точка {0, 0, 0}). Обобщить на случай, когда не проходит, легко: сначала переходим в систему координат, где ось вращения проходит через начало координат, делаем поворот, затем возвращаемся в исходную систему координат. Пётр Седов Код: plaintext 1. 2. 3. * Вектор n (направление оси вращения; в моём коде -- axis_dir) -- единичный. Пётр Седов Код: plaintext 1. KokonПётр Седов, кстати не знаете, что можно почитать об архитектуре 3D приложений?Не знаю. Но подозреваю, что архитектура 3D-редакторов более/менее такая же, как у обычных редакторов, отличается только рисование объектов и hit test (обнаружение, на какой объект щёлкнул пользователь). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2013, 05:00 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=38181749&tid=1341881]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
177ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 251ms |
| total: | 541ms |

| 0 / 0 |
