|
|
|
[c++, opengl] моделирование ткани
|
|||
|---|---|---|---|
|
#18+
Добрый день! Столкнулся с такой ситуацией: необходимо смоделировать падение ткани, закрепленной с одной стороны в нескольких точках (метод частиц + обратный метод Эйлера). Простым языком - штора. Алгоритм такой: 1. Разбиваем ткань на точки, считаем их массы, закрепляем некоторые точки на одной из сторон. 2. Считаем силы, действующие на точки (внутренние + внешние) 3. Зная силу и массу, вычисляем ускорение, скорость и, наконец, перемещение. Вроде не сложно, но возникла проблема: ткань падает отлично до определенного момента (где-то до половины пути), а потом замирает, только чуть колышется. Источник проблемы я не могу найти уже несколько дней. Код: 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. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. Вот до такого положения процесс идет и останавливается! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2008, 09:51 |
|
||
|
[c++, opengl] моделирование ткани
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2008, 09:57 |
|
||
|
[c++, opengl] моделирование ткани
|
|||
|---|---|---|---|
|
#18+
Непонятно, а что должно было получится в правильном варианте? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2008, 10:32 |
|
||
|
[c++, opengl] моделирование ткани
|
|||
|---|---|---|---|
|
#18+
Ткань должна опуститься до вертикального положения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2008, 10:54 |
|
||
|
[c++, opengl] моделирование ткани
|
|||
|---|---|---|---|
|
#18+
А почему конструктор спрятал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2008, 11:41 |
|
||
|
[c++, opengl] моделирование ткани
|
|||
|---|---|---|---|
|
#18+
Просто уменьшал количество строк кода. Вот он: Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2008, 12:01 |
|
||
|
[c++, opengl] моделирование ткани
|
|||
|---|---|---|---|
|
#18+
Меня удивляет что точки. за которые ты укрепил штору тоже находятся отнюдь не горизонтально. Может быть ты просто неверно задал настройки камеры и получил sqew+rotate. И почему ткань должна падать? Все точки имеют нулевую массу, следовательно гравитация на них не должна дествовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2008, 12:44 |
|
||
|
[c++, opengl] моделирование ткани
|
|||
|---|---|---|---|
|
#18+
Насчет камеры: да, возможно,но я перепробывал массу вариантов и оптимального так и не нашел (камера всегда была моим слабым местом), если вы подскажете мне лучший, я буду очень благодарен. Насчет массы, выше - это лишь конструктор. Есть функция, которая назначает массу для каждой точки (исходя из плотности материала и линейных размеров, а также положения точки, в углу, на краю или же в середине). В результате на точки действует сила тяжести, а после первой итерации начинают действовать внутренние силы и сила затухания. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2008, 13:37 |
|
||
|
[c++, opengl] моделирование ткани
|
|||
|---|---|---|---|
|
#18+
Начать следует с правильной установки камеры. К сожалению я давно занимался с OpenGL и уже не вспомню как это делается. Но для простоты настройки тебе надо нарисовать объект-маркер. Например пирамида. Поставить её так чтобы она указывала направление вектора гравитации и горизонт. По ней надо правильно выставить камеру. Ну а дальше разбиратсься с точками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2008, 14:04 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=35683327&tid=1344814]: |
0ms |
get settings: |
8ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
187ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
| others: | 239ms |
| total: | 533ms |

| 0 / 0 |
