|
154 / 31 / 11
Регистрация: 29.10.2012
Сообщений: 397
|
||||||||||||||||
Компонента w вектора слишком большая04.09.2014, 01:42. Показов 920. Ответов 12
Метки нет (Все метки)
Здавствуйте. Пишу 3д рендеринг: без никаких opengl, directx и прочих api. В общем, как обычно, есть три матрицы: Transformation (состоит из Translation, Rotation, Scaling), View (сделал так, что она является центром пространства, сделал обычный transpose вместо inverse) и пытаюсь сделать Perspective Projection Matrix. Проблема заключается в том, что компонента W выходит намного больше чем компонеты x,y,z; Таким образом выходит что все эти значения приблизительно равны нулю. Получается непонятная белеберда. Пробовал различные матрицы perspective projection:http://www.codinglabs.net/arti... atrix.aspx
http://www.scratchapixel.com/l... on-matrix/ http://ogldev.atspace.co.uk/ww... ial12.html Значения fieldOfView, near far, translate, scale, lookAt, eye менял по-всякому, всё равно ерунда какая-то.
Добавлено через 5 минут
0
|
||||||||||||||||
| 04.09.2014, 01:42 | |
|
Ответы с готовыми решениями:
12
Константа слишком большая Слишком большая нагрузка на ЦП Слишком большая база |
|
154 / 31 / 11
Регистрация: 29.10.2012
Сообщений: 397
|
|||||||
| 04.09.2014, 01:47 [ТС] | |||||||
0
|
|||||||
|
154 / 31 / 11
Регистрация: 29.10.2012
Сообщений: 397
|
||||||
| 04.09.2014, 17:22 [ТС] | ||||||
Что не так с моим рендерингом. Если надо могу скинуть весь проект и файл, с которого читаю vertices и faces.
0
|
||||||
|
154 / 31 / 11
Регистрация: 29.10.2012
Сообщений: 397
|
||||||||||||
| 04.09.2014, 20:07 [ТС] | ||||||||||||
0
|
||||||||||||
|
|
|||||||
| 04.09.2014, 20:12 | |||||||
0
|
|||||||
|
154 / 31 / 11
Регистрация: 29.10.2012
Сообщений: 397
|
|
| 04.09.2014, 20:24 [ТС] | |
|
Спасибо, но по-моему - это извращение. Если придётся изменить какое-нибудь значение, то придётся всю структуру цикла переделывать. Да и читабельность нарушается. Помогите мне не с точки зрения техники, а с точки зрения функциональности. Не работает матрица, не знаю, что еще пробовать.
0
|
|
|
|
||||
| 04.09.2014, 21:07 | ||||
|
1) создание матриц и заполнение нулями по дефолту логично вынести в отдельную функцию (лучше перейти к классам и доверить это конструктору) 2) translateX, translateY и translateZ - тоже вектор. Что вами не учитывается. Нужны классы "Матрица", "Вектор". Методы: сложение, умножение (матрица-матрица, матрица-вектор, матрица-число, вектор-число) Без техники незачем это всё городить.
0
|
||||
|
154 / 31 / 11
Регистрация: 29.10.2012
Сообщений: 397
|
||||||||||||
| 04.09.2014, 21:48 [ТС] | ||||||||||||
Назревает вопрос: стоит ли ради наличия возможности и реализации оператора перемножения матриц создавать сам объект типа Matrix, у которого будет 16 полей или float[4][4]?
0
|
||||||||||||
|
154 / 31 / 11
Регистрация: 29.10.2012
Сообщений: 397
|
|||
| 06.09.2014, 15:06 [ТС] | |||
|
Решил сначала разобраться с ортогональной проекцией. Есть вопрос. На этом сайтеhttp://www.codinglabs.net/arti... atrix.aspx написано
Заметил, что есть связь между значениями scale в transformation matrix и конечными значениями vertex'ов, после того, как пройдут через projection matrix. Не понимаю, ведь недолжно так быть. Model space - это model space. Он может быть каким угодно, ведь потом мы всё равно конвертируем всё в view space. Может я ошибься с порядком перемножения? Поправьте меня, если я неправ. Сначала я создаю projection matrix, потом view. Перемножаю projection на view (не наоборот). Потом результат перемножаю на transformation matrix. После этого перемножаю матрицы на vertices.
0
|
|||
|
694 / 304 / 99
Регистрация: 04.07.2014
Сообщений: 851
|
||||||
| 08.09.2014, 16:58 | ||||||
|
1. Использовать массивы фиксированного размера как параметры и результат функции в С++ - очень плохая идея. С ними будут выскакивать различного рода проблемы (преобразование к double**, утечка памяти и т.д.). Лучше их обернут в структуры/классы, да и вообще в С++ удобнее использовать std::vector и std::array
2. У тебя каша с матрицами. "Повернуть относительно центра" и "сдвинуть" не тоже самое, что "сдвинуть" и "повернуть относительно центра". Поэтому у тебя должен быть класс "матрица", для которого определены статические функции для их генерации, определены операции умножения и т.д. Тогда ты сможешь более комфортно с ними работать. Например так:
К порядку умножения. Тут надо помнить, что умножение матриц (вектор - это тоже матрица) ассоциативно, но не коммутативно. Если ты хочешь передвинуть (T) вектор (v0), а потом его повернуть (R), то справедливо следующее: v1 = T*v0; v2 = R*v2; v2 = R*(T*v0) v2= (R*T)*v0 M=R*T; v2=M*v0
0
|
||||||
| 08.09.2014, 16:58 | |
|
Помогаю со студенческими работами здесь
13
Константа слишком большая Слишком большая громкость в наушниках Слишком большая длина записи
Слишком большая громкость в наушниках Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во
всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
|