5 / 5 / 0
Регистрация: 22.01.2020
Сообщений: 77
|
|
1 | |
Вращение объекта вокруг локальных координат в OpenTK07.10.2020, 18:53. Показов 5148. Ответов 41
Собственно, вопрос простой ,но пока непонятный для меня! Как в OpenTK можно реализовывать вращение объектa на сцене вокруг локальных координат???
0
|
07.10.2020, 18:53 | |
Ответы с готовыми решениями:
41
C# OpenTK Вращение камеры вокруг своей оси Вращение вокруг сировой системы координат Вращение вокруг прежних координат Вращение кубика вокруг начала координат |
Just Do It!
|
||||||
11.10.2020, 19:19 | 21 | |||||
давайте, а то я пока выравнивал игзампл ещё и глюк c FOV тамошний(SDK OpenTK взятый где-то на просторах инета)
пришлось исправлять: сам исходник:
https://www.cyberforum.ru/post14904325.html всё работает: ФПС = 100500
0
|
5 / 5 / 0
Регистрация: 22.01.2020
Сообщений: 77
|
|
11.10.2020, 19:52 [ТС] | 22 |
Я сейчас допишу более простой пример с исходником.Насчет белого окна- для меня загадка, вроде все робит)))
Добавлено через 1 минуту zayats80888, Вот новый пример с исходником Test_2.rar Добавлено через 4 минуты XLAT, А под наклоном земля может вращаться вокруг свое оси (это то что мне нужно) ???
1
|
Just Do It!
|
|
11.10.2020, 19:54 | 23 |
Неясно: что здесь работает неправильно? кликаю курсором на батоны: модель вращается по соответствующим локальным к модели осям. возможно, вам нужно вращать как раз в глобальных осях
0
|
5 / 5 / 0
Регистрация: 22.01.2020
Сообщений: 77
|
|
11.10.2020, 19:56 [ТС] | 24 |
Повторюсь!У вас земля может вращаться под наклоном вокруг своей оси ??Это то что мне нужно
0
|
6091 / 3449 / 1402
Регистрация: 07.02.2019
Сообщений: 8,768
|
|
11.10.2020, 19:58 | 25 |
Я на шарпе не пишу, только С++
Наверное это моделька белая на весь экран, голова обезьяны то же белая, но хотя бы контуры видно, чего-то там не подгрузилось. При попытке повернуть прилетает следущее: Код
************** Текст исключения ************** System.ArgumentOutOfRangeException: Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекции. Имя параметра: index в System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource) в System.Collections.Generic.List`1.get_Item(Int32 index) в Chameleon.Form1.MouseMoveForm(Object sender, MouseEventArgs e) в D:\Game_Test\OpenTK\Chameleon\Bild_001\Chameleon\Chameleon\Form1.cs:строка 414 в System.Windows.Forms.Control.OnMouseMove(MouseEventArgs e) в System.Windows.Forms.Control.WmMouseMove(Message& m) в System.Windows.Forms.Control.WndProc(Message& m) в System.Windows.Forms.ScrollableControl.WndProc(Message& m) в System.Windows.Forms.UserControl.WndProc(Message& m) в System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) в System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
0
|
Just Do It!
|
||||||
11.10.2020, 20:12 | 26 | |||||
если нужен наклон, то нужно добавить наклон:
Если мне не изменяет память, то наклон Земли надеюсь на гифике он заметен.
0
|
zayats80888
|
11.10.2020, 20:23
#27
|
0
|
5 / 5 / 0
Регистрация: 22.01.2020
Сообщений: 77
|
|
11.10.2020, 20:36 [ТС] | 28 |
XLAT, Да не получается что-то Не понимаю я вас.Ну вот другой пример приведенный на картинки
Там есть разноцветные оси за счет которых можно вращать объект вокруг своих осей. Вот как это можно реализовать??
0
|
6091 / 3449 / 1402
Регистрация: 07.02.2019
Сообщений: 8,768
|
|
11.10.2020, 20:43 | 29 |
Я ж вам вроде написал как. Вам нужно сохранять матрицу вращения. И применять трансформации в нужном порядке.
Вот тут уже обсуждалось, посмотрите.Поворот объекта мышью
0
|
5 / 5 / 0
Регистрация: 22.01.2020
Сообщений: 77
|
|
11.10.2020, 20:49 [ТС] | 30 |
Извините, сразу не понял))А можно поподробней насчет сохранения и трансформации))
0
|
6091 / 3449 / 1402
Регистрация: 07.02.2019
Сообщений: 8,768
|
|
11.10.2020, 21:03 | 31 |
Я не любитель много писать, если б знал шарп, я б просто пример нактал, поэтому коротко.
Вам не нужно хранить углы вращения. Вам нужно хранит матрицу вращения ( rotationMatrix ). По событию мыши, если пользователь повернул на какой-то угол(относительный) вокруг какой-то оси, вы комбинируете этот поворот с этой матрицей, как я писал выше. В функции отрисовки вы просто считаете матрицу модели как transformMatrix = scaleMatrix * rotationMatrix * translationMatrix; и всё.
0
|
5 / 5 / 0
Регистрация: 22.01.2020
Сообщений: 77
|
|
11.10.2020, 21:09 [ТС] | 32 |
Ну иcходя из этого " transform *= Matrix4.CreateFromAxisAngle(axis, deltaAngle); "
Что здесь " axis " а что " deltaAngle "???Если подробно??
0
|
Модератор
2558 / 1094 / 375
Регистрация: 11.08.2017
Сообщений: 3,331
|
|
11.10.2020, 21:14 | 33 |
Dimas_Pomor, файлы и картинки загружайте на форум, пока устное предупреждение, продолжите нарушать (правила форума п4.11) начну применять санкции
0
|
6091 / 3449 / 1402
Регистрация: 07.02.2019
Сообщений: 8,768
|
|
11.10.2020, 21:16 | 34 |
axis - вектор, например ось X это (1, 0, 0).
deltaAngle - это на какой угол изменился поворот вокруг этой оси(как сильно юзер мышку дёрнул).
0
|
Just Do It!
|
|
11.10.2020, 21:29 | 35 |
а я не получил ответ на вопрос вос здесь:
https://www.cyberforum.ru/post14905257.html думаете легко быть телепатом? ну согласно Птоломею, Солнце вращается вокруг Земли. Эпициклы спасут космическую математику. да ваша заметка, вроде и не оффтоп, проблемы вращения разбираем же будем думать ...
0
|
5 / 5 / 0
Регистрация: 22.01.2020
Сообщений: 77
|
|
11.10.2020, 21:32 [ТС] | 36 |
Извините Я чуть ниже объяснил как он должен вращаться
0
|
Just Do It!
|
|
11.10.2020, 21:39 | 37 |
тут мне вот пока неясно:
будет ли накапливаться ошибка? А то глядишь и через 100 лет Антарктида "вверху" окажется! что подобно я уже делал давно, но уже щас не помню, при долгом вращении у меня получалось "облако мрака"... Добавлено через 3 минуты у ГОЛОВЫ нету никаких осей или исходник надо было перекомпилить? если голова вращается правильно, то какие тогда могут быть вопросы?
0
|
6091 / 3449 / 1402
Регистрация: 07.02.2019
Сообщений: 8,768
|
|
11.10.2020, 21:43 | 38 |
С матрицами да. Но есть кватернионы!
Если хочется именно через вращение, то это перемещение можно представить как комбинацию двух вращений: Вращение центра СК Земли вокруг Солнца (что у вас уже есть) и вращение самой СК Земли вокруг своего центра в той же плоскости, что и орбита, с той же угловой скоростью, только в обратном направлении.
1
|
5 / 5 / 0
Регистрация: 22.01.2020
Сообщений: 77
|
|
11.10.2020, 23:01 [ТС] | 39 |
zayats80888, Что- то не получается!Может все таки раскошелиться па примерчик????
Добавлено через 1 час 2 минуты XLAT,
0
|
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
|
||||||
12.10.2020, 07:12 | 40 | |||||
вот так ты хотел? Но тебе же выше писал zayats80888 что это надо сделать при помощи quaternions
0
|
12.10.2020, 07:12 | |
12.10.2020, 07:12 | |
Помогаю со студенческими работами здесь
40
Вращение объекта вокруг другого объекта Вращение вокруг объекта Вращение объекта вокруг точки Вращение модели вокруг объекта Как сделать свободное вращение камеры вокруг начала координат? Вращение объекта вокруг своей оси Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |