Автор |
Сообщение |
|
|
Заголовок сообщения: |
Re: Немного скриптового 3Dв кварке |
|
|
А с текстурами дело становится интереснее...
Вложения: |
star_destroyer_002.png [ 63.92 Кб | Просмотров: 18790 ]
|
А с текстурами дело становится интереснее...
|
|
|
|
Добавлено: Пн фев 02, 2015 03:11 |
|
|
|
|
|
Заголовок сообщения: |
Re: Немного скриптового 3Dв кварке |
|
|
О нет, это не так. Это реализаци именно функции glFrustum, а не коррекция каждой точки программно. Так что тут все в рамках OpenGL реализации - glFrustum делает именно так. Берет входные параметры, вычисляет новую матрицу согласной указанной формуле и применяет эту матрицу к сцене. Она вызывается один раз при инициализации сцены. Целью написания этой процедуры было понимание как работает эта функция, а не написать на форте свой OpenGL. И код я привел лишь как пример, а не с целью "все теперь должны так делать" ))) А еще картинки есть? Интересно было бы посмотреть как все это работает на реальных задачах и сами задачи интересно было бы посмотреть.
О нет, это не так. Это реализаци именно функции glFrustum, а не коррекция каждой точки программно. Так что тут все в рамках OpenGL реализации - glFrustum делает именно так. Берет входные параметры, вычисляет новую матрицу согласной указанной формуле и применяет эту матрицу к сцене. Она вызывается один раз при инициализации сцены. Целью написания этой процедуры было понимание как работает эта функция, а не написать на форте свой OpenGL. И код я привел лишь как пример, а не с целью "все теперь должны так делать" ))) А еще картинки есть? Интересно было бы посмотреть как все это работает на реальных задачах и сами задачи интересно было бы посмотреть.
|
|
|
|
Добавлено: Чт янв 22, 2015 11:11 |
|
|
|
|
|
Заголовок сообщения: |
Re: Немного скриптового 3Dв кварке |
|
|
Это же невозможно применять в реальном приложении. Коррекция каждой точки программно? Нет, речь именно о том, чтобы пользоваться из Форта возможностями OpenGL, а не чтобы написать OpenGL на Форте. Десяток тысяч полигонов - и форт-реализация захлебнется.
Это же невозможно применять в реальном приложении. Коррекция каждой точки программно? Нет, речь именно о том, чтобы пользоваться [b]из Форта[/b] возможностями OpenGL, а не чтобы написать OpenGL на Форте. Десяток тысяч полигонов - и форт-реализация захлебнется.
|
|
|
|
Добавлено: Чт янв 22, 2015 04:39 |
|
|
|
|
|
Заголовок сообщения: |
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 Перспектива
Нет, не нашел. Зато нашел у себя аналог - расчет этой матрицы и её применение 8) Результат такой же будет. Вот как-то так: [code]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 Перспектива[/code]
|
|
|
|
Добавлено: Ср янв 21, 2015 23:34 |
|
|
|
|
|
Заголовок сообщения: |
Re: Немного скриптового 3Dв кварке |
|
|
Пока все отлаживается, лучше иметь меньше преобразований, а то будет непонятно, почему картинка выглядит именно так. По умолчанию в кварке вызывается вот это: Код: invoke glFrustum, -1.0, 1.0, -1.0, 1.0, 3.0, 10.0
Пока все отлаживается, лучше иметь меньше преобразований, а то будет непонятно, почему картинка выглядит именно так. По умолчанию в кварке вызывается вот это:
[code] invoke glFrustum, -1.0, 1.0, -1.0, 1.0, 3.0, 10.0[/code]
|
|
|
|
Добавлено: Ср янв 21, 2015 23:28 |
|
|
|
|
|
Заголовок сообщения: |
Re: Немного скриптового 3Dв кварке |
|
|
Так я же тут рядом где-то выкладывал какие парметры нужны ей. Щас поищу.
Так я же тут рядом где-то выкладывал какие парметры нужны ей. Щас поищу.
|
|
|
|
Добавлено: Ср янв 21, 2015 23:25 |
|
|
|
|
|
Заголовок сообщения: |
Re: Немного скриптового 3Dв кварке |
|
|
А есть, только надо подбирать параметры. Это все вообще управляется динамически - не только прокрутка сцены, но и геометрия всех фигур и добавление новых.
А есть, только надо подбирать параметры. Это все вообще управляется динамически - не только прокрутка сцены, но и геометрия всех фигур и добавление новых.
|
|
|
|
Добавлено: Ср янв 21, 2015 23:19 |
|
|
|
|
|
Заголовок сообщения: |
Re: Немного скриптового 3Dв кварке |
|
|
Прикольно Еще бы заюзать glFrustum для большей релистичности =)
Прикольно :) Еще бы заюзать glFrustum для большей релистичности =)
|
|
|
|
Добавлено: Ср янв 21, 2015 21:22 |
|
|
|
|
|
Заголовок сообщения: |
Немного скриптового 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
Вложения: |
3d_creator_002.png [ 27.44 Кб | Просмотров: 19035 ]
|
[code] // ********** 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 [/code]
|
|
|
|
Добавлено: Ср янв 21, 2015 03:20 |
|
|
|
|