|
|
|
DirectX вращение камеры вокруг центра
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! По возможности поделитесь пожалуйста ссылками на примеры или статьи где реализовано вращение камеры вокруг определенной точно(центра). А то в инете ничего подходящего найти не могу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2013, 17:33 |
|
||
|
DirectX вращение камеры вокруг центра
|
|||
|---|---|---|---|
|
#18+
Предположим, точка находится в центре вьюпорта: - рассчитать мировое расстояние от камеры до точки - переместить камеру вперед на указанное расстояние - повернуть камеру на нужный угол - переместить камеру назад на указанное расстояние - сделать рефреш ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2013, 19:54 |
|
||
|
DirectX вращение камеры вокруг центра
|
|||
|---|---|---|---|
|
#18+
По-моему, статьи не нужны. Обычно хватает элементарных знаний аналитической геометрии (учебник для 1-го курса техвуза) и help по DirectX. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2013, 10:09 |
|
||
|
DirectX вращение камеры вокруг центра
|
|||
|---|---|---|---|
|
#18+
KokonЗдравствуйте! По возможности поделитесь пожалуйста ссылками на примеры или статьи где реализовано вращение камеры вокруг определенной точно(центра). А то в инете ничего подходящего найти не могу. Я у себя так делал: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2013, 11:44 |
|
||
|
DirectX вращение камеры вокруг центра
|
|||
|---|---|---|---|
|
#18+
wvetal, спасибо за помощь. чуть-чуть переделал Код: c# 1. 2. 3. 4. вроде по формулам сферических координат так должно быть. Но все равно есть какой-то косяк. Просто в центре сцены есть куб. когда он крутиться(точнее камера вокруг него) он доходит до определенного момента и начинает обратно крутиться, потом снова чуть покрутиться и снова в обратную сторону. Пока не разобрался почему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2013, 16:14 |
|
||
|
DirectX вращение камеры вокруг центра
|
|||
|---|---|---|---|
|
#18+
pirovindos, да у меня знаний то особо нет, я только начала все это дело изучать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2013, 16:15 |
|
||
|
DirectX вращение камеры вокруг центра
|
|||
|---|---|---|---|
|
#18+
Kokonwvetal, ... Просто в центре сцены есть куб. когда он крутиться(точнее камера вокруг него) он доходит до определенного момента и начинает обратно крутиться, потом снова чуть покрутиться и снова в обратную сторону. Пока не разобрался почему. А как надо? Чтоб он не начинал обратно крутится? Чтоб крутился все время в одну сторону? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2013, 17:52 |
|
||
|
DirectX вращение камеры вокруг центра
|
|||
|---|---|---|---|
|
#18+
Kokon вроде по формулам сферических координат так должно быть. Но все равно есть какой-то косяк. Просто в центре сцены есть куб. когда он крутиться(точнее камера вокруг него) он доходит до определенного момента и начинает обратно крутиться, потом снова чуть покрутиться и снова в обратную сторону. Пока не разобрался почему. Точка вокруг которой должна крутится камера какие координаты имеет: (0,0,0)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2013, 17:58 |
|
||
|
DirectX вращение камеры вокруг центра
|
|||
|---|---|---|---|
|
#18+
Kokon, А если так попробовать: Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2013, 18:12 |
|
||
|
DirectX вращение камеры вокруг центра
|
|||
|---|---|---|---|
|
#18+
Kokon когда он крутиться(точнее камера вокруг него) он доходит до определенного момента и начинает обратно крутиться, потом снова чуть покрутиться и снова в обратную сторону. Если куб с незакрашенными гранями, а в виде "каркаса из проволочек", то наблюдаемый эффект может быть оптической иллюзией, а крутится все правильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2013, 18:22 |
|
||
|
DirectX вращение камеры вокруг центра
|
|||
|---|---|---|---|
|
#18+
pirovindosKokon когда он крутиться(точнее камера вокруг него) он доходит до определенного момента и начинает обратно крутиться, потом снова чуть покрутиться и снова в обратную сторону. Если куб с незакрашенными гранями, а в виде "каркаса из проволочек", то наблюдаемый эффект может быть оптической иллюзией, а крутится все правильно. у куба грани закрашены и там четко видно, что он крутиться в обратную сторону, когда переменная ugol достигает 180 градусов, т.е. каждый 180 градусов камера меняет направление движения на противоположное. попробовал как подсказал wvetal но там направление меняется каждые 90 градусов. а вообще я хочу сделать чтобы камера облетала сцену как это сделано в 3d max или в любом другом 3d редакторе. Я бы просто потом движение камеры привязал не к клаве, а к мышке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2013, 21:48 |
|
||
|
DirectX вращение камеры вокруг центра
|
|||
|---|---|---|---|
|
#18+
pirovindosKokonвроде по формулам сферических координат так должно быть. Но все равно есть какой-то косяк. Просто в центре сцены есть куб. когда он крутиться(точнее камера вокруг него) он доходит до определенного момента и начинает обратно крутиться, потом снова чуть покрутиться и снова в обратную сторону. Пока не разобрался почему. Точка вокруг которой должна крутится камера какие координаты имеет: (0,0,0)? да (0,0,0). т.е. центр сцены ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2013, 21:49 |
|
||
|
DirectX вращение камеры вокруг центра
|
|||
|---|---|---|---|
|
#18+
кстати, когда вправо или влево вращаешь, то все нормально, проблема только когда вверх вниз ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2013, 22:37 |
|
||
|
DirectX вращение камеры вокруг центра
|
|||
|---|---|---|---|
|
#18+
2 Kokon: В 3ds max (и его бесплатном варианте, gmax ), режим вращения камеры называется «arc rotate». При этом есть особая точка, arc rotate center, проекция которой остаётся неподвижной. То есть, во время вращения камеры, arc rotate center проецируется в один и тот же пиксел viewport-а. В качестве arc rotate center обычно берётся центр выделенных объектов. Реализовать max-овский режим arc rotate можно например так: (C++, Direct3D 9) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. Использовал тип double (а не float), чтобы погрешность поменьше накапливалась после многих вызовов функции rotate. Как реализовать arc rotate, чтобы погрешность не накапливалась, мне пока в голову не пришло. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2013, 03:09 |
|
||
|
DirectX вращение камеры вокруг центра
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. - это вверх (ну или вниз)? Как задан вектор ориентации камеры и "точка зрения"? Они меняются при вращении? По идее точка зрения меняться не должна. А ориентация должна и там нужно аккуратно посчитать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2013, 10:45 |
|
||
|
DirectX вращение камеры вокруг центра
|
|||
|---|---|---|---|
|
#18+
Пётр Седов, спасибо код поразбираюсь с кодом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2013, 11:01 |
|
||
|
DirectX вращение камеры вокруг центра
|
|||
|---|---|---|---|
|
#18+
pirovindos Код: plaintext 1. - это вверх (ну или вниз)? Как задан вектор ориентации камеры и "точка зрения"? Они меняются при вращении? По идее точка зрения меняться не должна. А ориентация должна и там нужно аккуратно посчитать. Камера у меня устанавливается вот так Код: c# 1. 2. 3. 4. в этом коде Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. синус меняется от 0 до 1. т.е. пока ugol растет от 0 до 90 градусов камера двигается нормально, потом синус начинается уменьшаться и камера двигается в обратную сторону. т.е. получается что угол меняться не должен. я должен сдвигать камеру на одинаковый угол. Пробовал при неменяющимся значении ugol делать cam-x=cam-x+r*...... но тогда камера постоянно отодвигается пока вообще не улетает. Вот такая у меня сейчас проблема. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2013, 11:24 |
|
||
|
DirectX вращение камеры вокруг центра
|
|||
|---|---|---|---|
|
#18+
Kokon, Я уже приводил этот код. У себя его пробовал? К чему он приводит? Что не работает? Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2013, 11:41 |
|
||
|
DirectX вращение камеры вокруг центра
|
|||
|---|---|---|---|
|
#18+
По-моему, при вращении "вверх/вниз", при переходе через зенит, не получится использовать постоянный Код: plaintext 1. Нужно его менять. Сейчас у тебя при переходе через зенит скачком меняются местами верх и низ на кадре камеры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2013, 11:42 |
|
||
|
DirectX вращение камеры вокруг центра
|
|||
|---|---|---|---|
|
#18+
wvetalKokon, Я уже приводил этот код. У себя его пробовал? К чему он приводит? Что не работает? Код: plaintext 1. 2. 3. 4. Пробовал, но все равно как-то странно двигается, тоже вроде направление меняется на обратное. Попробую на с# реализовать код который Пётр Седов предложил, потом отпишусь о результатах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2013, 11:52 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=38132671&tid=1341933]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
266ms |
get topic data: |
8ms |
get forum data: |
1ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 307ms |
| total: | 658ms |

| 0 / 0 |
