Forth http://www.fforum.winglion.ru/ |
|
Немного скриптового 3Dв кварке http://www.fforum.winglion.ru/viewtopic.php?f=23&t=3033 |
Страница 1 из 1 |
Автор: | Hishnik [ Ср янв 21, 2015 03:20 ] | ||
Заголовок сообщения: | Немного скриптового 3Dв кварке | ||
Код: // ********** user script *****
#BRICK NEW-OBJECT 0.5 0.0 0.0 CREATE-ORIGIN-POINT 0.2 0.5 0.4 CREATE-BRICK 0 0x7FFFFFFF 0 ACTIVE-OBJECT SET-3DCOLOR #BRICK NEW-OBJECT -0.7 0.4 0.2 CREATE-ORIGIN-POINT 0.2 0.2 0.2 CREATE-BRICK 0x7FFFFFFF 0 0 ACTIVE-OBJECT SET-3DCOLOR #PYRAMID NEW-OBJECT -0.5 0.0 -0.3 NEW-POINT SET-PT0 -0.1 0.0 -0.3 NEW-POINT SET-PT1 -0.1 0.0 0.0 NEW-POINT SET-PT2 -0.5 0.0 0.0 NEW-POINT SET-PT3 -0.3 0.3 -0.2 NEW-POINT SET-PT4 0 0x7FFFFFFF 0x7FFFFFFF ACTIVE-OBJECT SET-3DCOLOR #BRICK NEW-OBJECT -0.3 -0.3 -0.2 CREATE-ORIGIN-POINT 0.1 0.2 0.2 CREATE-BRICK 0x7FFFFFFF 0x7FFFFFFF 0 ACTIVE-OBJECT SET-3DCOLOR
|
Автор: | VoidVolker [ Ср янв 21, 2015 21:22 ] |
Заголовок сообщения: | Re: Немного скриптового 3Dв кварке |
Прикольно Еще бы заюзать glFrustum для большей релистичности =) |
Автор: | Hishnik [ Ср янв 21, 2015 23:19 ] |
Заголовок сообщения: | Re: Немного скриптового 3Dв кварке |
А есть, только надо подбирать параметры. Это все вообще управляется динамически - не только прокрутка сцены, но и геометрия всех фигур и добавление новых. |
Автор: | VoidVolker [ Ср янв 21, 2015 23:25 ] |
Заголовок сообщения: | Re: Немного скриптового 3Dв кварке |
Так я же тут рядом где-то выкладывал какие парметры нужны ей. Щас поищу. |
Автор: | Hishnik [ Ср янв 21, 2015 23:28 ] |
Заголовок сообщения: | Re: Немного скриптового 3Dв кварке |
Пока все отлаживается, лучше иметь меньше преобразований, а то будет непонятно, почему картинка выглядит именно так. По умолчанию в кварке вызывается вот это: Код: invoke glFrustum, -1.0, 1.0, -1.0, 1.0, 3.0, 10.0
|
Автор: | VoidVolker [ Ср янв 21, 2015 23:34 ] |
Заголовок сообщения: | Re: Немного скриптового 3Dв кварке |
Нет, не нашел. Зато нашел у себя аналог - расчет этой матрицы и её применение Результат такой же будет. Вот как-то так: Код: 0 \ Структура матрицы
1 FLOATS -- -XX 1 FLOATS -- -XY 1 FLOATS -- -XZ 1 FLOATS -- -XW 1 FLOATS -- -YX 1 FLOATS -- -YY 1 FLOATS -- -YZ 1 FLOATS -- -YW 1 FLOATS -- -ZX 1 FLOATS -- -ZY 1 FLOATS -- -ZZ 1 FLOATS -- -ZW 1 FLOATS -- -X 1 FLOATS -- -Y 1 FLOATS -- -Z 1 FLOATS -- -S CONSTANT /MATRIX CREATE МПерспектива \ ( -- a ) \ аналог glFrustum 0. F, 0. F, 0. F, 0. F, 0. F, 0. F, 0. F, 0. F, 0. F, 0. F, 0. F, 0. F, 0. F, 0. F, -1. F, 0. F, \ Перспективный вид \ E 0 A 0 \ 0 F B 0 \ 0 0 C D \ 0 0 -1 0 \ A=(r+l)/(r-l) \ B=(t+b)/(t-b) \ C=-(f+n)/(f-n) \ D=-f*2*n/(f-n) \ E=2*n/(r-l) \ F=2*n/(t-b) : Перспектива \ ( F: l r b t n f -- ) \ l r - Координаты левой и правой вертикальных плоскостей отсечения. \ b t - Координаты нижней и верхней горизонтальных плоскостей отсечения. \ n f - Координаты ближней и дальней плоскостей отсечения по глубине. Обе величины должны быть положительными. (ff) F! (fn) F! (ft) F! (fb) F! (fr) F! (fl) F! (fr) F@ (fl) F@ F- (frl) F! (ft) F@ (fb) F@ F- (ftb) F! (ff) F@ (fn) F@ F- (ffn) F! (fn) F@ 2.0 F* (f2n) F! (fr) F@ (fl) F@ F+ (frl) F@ F/ МПерспектива -XZ F! \ A (ft) F@ (fb) F@ F+ (ftb) F@ F/ МПерспектива -YZ F! \ B (ff) F@ (fn) F@ F+ (ffn) F@ F/ FNEGATE МПерспектива -ZZ F! \ C (ff) F@ FNEGATE (f2n) F@ F* (ffn) F@ F/ МПерспектива -ZW F! \ D (f2n) F@ (frl) F@ F/ МПерспектива -XX F! \ E (f2n) F@ (ftb) F@ F/ МПерспектива -YY F! \ F МПерспектива glMultMatrixd@ API1 DROP ; -0.5 0.5 -0.5 0.5 5.0 200.0 Перспектива |
Автор: | Hishnik [ Чт янв 22, 2015 04:39 ] |
Заголовок сообщения: | Re: Немного скриптового 3Dв кварке |
Это же невозможно применять в реальном приложении. Коррекция каждой точки программно? Нет, речь именно о том, чтобы пользоваться из Форта возможностями OpenGL, а не чтобы написать OpenGL на Форте. Десяток тысяч полигонов - и форт-реализация захлебнется. |
Автор: | VoidVolker [ Чт янв 22, 2015 11:11 ] |
Заголовок сообщения: | Re: Немного скриптового 3Dв кварке |
О нет, это не так. Это реализаци именно функции glFrustum, а не коррекция каждой точки программно. Так что тут все в рамках OpenGL реализации - glFrustum делает именно так. Берет входные параметры, вычисляет новую матрицу согласной указанной формуле и применяет эту матрицу к сцене. Она вызывается один раз при инициализации сцены. Целью написания этой процедуры было понимание как работает эта функция, а не написать на форте свой OpenGL. И код я привел лишь как пример, а не с целью "все теперь должны так делать" ))) А еще картинки есть? Интересно было бы посмотреть как все это работает на реальных задачах и сами задачи интересно было бы посмотреть. |
Автор: | Hishnik [ Пн фев 02, 2015 03:11 ] | ||
Заголовок сообщения: | Re: Немного скриптового 3Dв кварке | ||
А с текстурами дело становится интереснее...
|
Страница 1 из 1 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |