Пожалуйста, не блокируйте рекламу!

0 Пользователей и 1 Гость просматривают эту тему.

*

Оффлайн Стоянов

  • **
  • 48
  • Репутация: +11/-0

Test

Объект(вложение) представляет собой показатели позиций X,Y,Z точки взгляда и X,Y,Z точки цели взгляда(3D-текст).Идея заключается в том, чтобы в зависимости от проворота камеры в 3D-окне и изменениями позиций взгляда и цели изменялись углы поворота вокруг осей ROTx, ROTy, ROTz.Говоря проще:вне зависимости от поворота камеры текст должен располагаться параллельно экрану.Насколько я понимаю,нужно геометрически определить углы расположения вектора по отношению к осям.Кто посильнее в математике - выручай:
Добавлю 3d-скрипт(чтоб лишний раз не перегонять в программу):
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!координаты камеры
  E_X = GLOB_EYEPOS_X 
  E_Y = GLOB_EYEPOS_Y
  E_Z = GLOB_EYEPOS_Z
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!координаты цели
  T_X = GLOB_TARGPOS_X
  T_Y = GLOB_TARGPOS_Y
  T_Z = GLOB_TARGPOS_Z
pen          4
dimtext=100
        MATERIAL text_material
        DEFINE STYLE "AA"fontstyl,dimtext,5,0
        SET STYLE "AA"
        E_Xt=STR(E_X,5,3)
        E_Yt=STR(E_Y,5,3)
        E_Zt=STR(E_Z,5,3)
        T_Xt=STR(T_X,5,3)
        T_Yt=STR(T_Y,5,3)
        T_Zt=STR(T_Z,5,3)
!!Поворот текста voltextangle
!!!!!!!!!--------????????????
!!ROT voltextangle
        ADDY dimtext/1000*0.7
        TEXT 0.001,0,E_Xt
        ADDY -dimtext/1000*0.7*2
        TEXT 0.001,0,E_Yt
        ADDY -dimtext/1000*0.7*2
        TEXT 0.001,0,E_Zt

        ADDY -dimtext/1000*0.7*3
        TEXT 0.001,0,T_Xt
        ADDY -dimtext/1000*0.7*2
        TEXT 0.001,0,T_Yt
        ADDY -dimtext/1000*0.7*2
        TEXT 0.001,0,T_Zt
del top
То что существует маркера в ArchiCAD я знаю,но мне бы хотелось продублировать их в 3d-виде для того чтобы иметь возмость следить за изменениями параметров объекта "сразу"  и никуда не переключаясь.К примеру:в объекте "бигборд" есть 3d-маркер бетонной подушки(комплектующие и их количество),3d-маркер несущей части(компл.),3d-маркер башни(компл.).Да и сама работа в окне просто выглядит интереснее...
 Скорее всего маркер где-нибудь уже реализован,если встречали --- скиньте линк.Спасибо.
« Последнее редактирование: Мая 27, 2009, 11:49:57 от DEDERKA »

*

Оффлайн Valery W

  • *****
  • 5987
  • Репутация: +634/-14
  • Пол: Мужской
Re: 3D-маркер с автоматическим поворотом
« Ответ #1 : Мая 27, 2009, 13:43:14 »
Поворот объекта "лицом" к камере уже давно реализован самим GS. Смотрите объекты-билборды в стандартной библиотеке - "Дерево, растров. изображ", "Растров.изобр.автомобиля" и "Человек,растровое изобр".
Вот основной скрипт поворачивающий объект к камере.

dx= k~ - n~
dy= l~ - o~

!---------------------------------------
if SYMB_MIRRORED then
roty w~
else
roty -w~
endif

if abs(k~-n~)<EPS and l~<o~ then goto 2 !!if k~=n~
if abs(k~-n~)<EPS and l~>o~ then !!if k~=n~
roty 180
goto 2
endif

alf=atn(abs(dy/dx))
!---------------------------------------

if SYMB_MIRRORED then
if dx<0 and dy>0 then roty -(180-alf)
if dx<0 and dy<0 then roty -(180+alf)
if dx>0 and dy<0 then roty -(-alf)
if dx>0 and dy>0 then roty -(alf)
else
if dx<0 and dy>0 then roty (180-alf)
if dx<0 and dy<0 then roty (180+alf)
if dx>0 and dy<0 then roty (-alf)
if dx>0 and dy>0 then roty (alf)
endif

2: ! описание формы объекта

Часть скрипта ограниченная мной линиями, похоже, относится к видиосъемке.

Хочу предупредить, что в ArchiCAD объект не будет поворачиваться к камере одновременно с изменением её позиции. Он повернется только когда Вы скомандуете "Построить и заново регенерировать" (Ctrl+Alt+Shift+R).

 

Похожие темы

  Тема / Автор