Home www.visualprog.cz

 
(c)2003 Pavel Pindora
 Email Kontakt
Pro více informací je zde formulář
 

Click on of the PayPal button to donate money to this Project

 

Tutorial

3D OpenGl Technology Engine

3DOT engine

 Pozor, protože se jedná o jakousi alfa verzi, můžou se popsané věci časem měnit.

 
         

3DOT Art digital gallery

Stručná charakteristika projektu 3DOT engine

Cílem projektu je vyvinout software, pracující se základními OpenGl objekty

 v 3D prostoru , které mohou měnit své parametry, dynamicky, během online

 renderování a to na základě dat přicházejících za pomocí různých interfejsů

 z reálného světa a zpracovaných pomocí skriptovacích či jiných technik,

 použitých v tomto engine nebo i mimo něj. 

Projekt si neklade za cíl modelování k tomu jsou určeny jiné 3D programy, ze

 kterými jej nelze srovnávat i když některé modelovací možnosti snad bude

 mít ale spíše jen jako výsledek po zpracování dat. 

Pokud je nutné použít složitější 3D tvary , je potřeba je vymodelovat v

 příslušném 3D software a exportovat do obj, který tento engine je schopen

 importovat

3DOT engine je výchozím prostředkem pro projekty :

3D Vizualizací

ViDJ

... 

 
¨

16.01.2005 Natočení celé scény okolo osy X (Y,Z)

19.06.2005 Trojúhelník, základní objekt

 

 

----- 16.01.2005 Natočení celé scény okolo osy X (Y,Z) ------

Nejdříve si ukážeme jak otočit celou scénou okolo osy X, podobně to pak můžeme provést okolo os Y,Z.

Následující obrázek ukazuje jak to provést rychle , zásahem uživatele.

Pro lepší orientaci je zadavatel umístěn zde t.j. ve spodní části okna.

 

Častějším případem ale bude možnost ovlivňovat natočení programově , takže si ukážeme, jak vytvořit proměnnou a jak jí napojit na položku , zde na Rotate X. Potom hodnotu této proměnné můžeme ovlivňovat skriptem a také ji sledovat v debugeru (Watch).

 

Pokud chceme sledovat hodnotu proměnné (RotateX0) , vybereme ji a stiskneme tlačítko Add Watch-> . Proměnná se zobrazí ve sloupci Debug a můžeme sledovat její hodnotu

 

 

Hodnotu můžeme zadávat i ručně , opět označíme proměnnou , ta se přesune do spodního sloupce Variable  (pod Debug) a do sloupce Run value pak vložíme novou hodnotu, v našem případě -27.0

 

Natočení pak bude vypadat takto

Nakonec si ukážeme přístup k proměnné ve skriptu

Dim AddRotX 
Dim ok


AddRotX = mUserData.GetValue("/Root/UserVar/RotateX0")
if AddRotX>50.0  then
ok = mUserData.SetValue("/Root/UserVar/RotateX0",0.0)
end if

AddRotX = AddRotX + 0.3
ok = mUserData.SetValue("/Root/UserVar/RotateX0",AddRotX)

 

----- 19.06.2005 Trojúhelník, základní objekt ------

 Nejdříve založíme prázdný projekt s názvem třebas Trojúhelník.

Potom do scény vložíme trojúhelník .

Po stisku tlačítka ok můžeme dále měnit parametry budoucího objektu, jako vrcholy VertxX,...Z, barvu každého vrcholu VColrR,G,B atd. Trojúhelník má tři vrcholy , proto jsou zde tři řádky VerIdx 0,1,2.

Po stisku tlačítka Add , je objekt trojúhelníku vytvořen ve scéně , v parametrizačním poli pak můžeme podobným způsobem jako jsme v předchozím tutoriále měnili parametry , změnit parametry. Například změníme barvu Color R0 = 200, G0=0, B0=10

Potom bude objekt vypadat takto

Stejně tak naneseme textůru,představovanou pořadovým číslem, nebo měnit polohu vrcholů změnou hodnot Vertex X0,1,2, Vertex Y0,1,2, Vertex Z0,1,2. Poloha a natočení lze měnit hodnotami v Translate X,Y,Z , Rotate X,Y,Z. Scénu potom nesmíme zapomenout uložit a to nejlépe do stejného adresáře , kde jsme založili projekt. Důvodem je navázání parametrů trojúhelníku na proměnné, řízené skriptem. Takto uloženou scénu pak musíme svázat s projektem Trojúhelník.

Projekt svazuje soubory scény,proměnných a skriptů . Umožňuje tak měnit chování,vlastnosti objektů během chodu aplikace na základě různých podnětů, generovaných skriptem do proměnných, nebo tyto proměnné mohou být navázány na data z reálného světa, pomocí "interfejsů".

Ukážeme si dále jak ovládat, například, polohu vrcholu 0 v ose X,Y,Z pomocí proměnných a ty zase ovlivníme výpočtem ve VB skriptu..

Otevřeme menu Projekt / Projekt open a načteme náš projekt Trojúhelník. Ve stejném menu spustíme Projekt manager ,

protože budeme přidávat scénu , tak do Scene vložíme její název souboru, t.j. Trojúhelník.scene a to pomocí tlačítka Add file to project.

Vytvoření proměnných pro vrcholy X0,Y0,Z0.

Proměnné založíme za pomocí Data manageru (ovládání bylo popsáno již v předchozím tutoriále) , budou mít název VertexX0,VertexY0,VertexZ0 a uložíme je do složek User Var, kde se ostatně dají vytvářet user variables.  Jako název stačí zadat jen např. VertexX , protože po stisku tlačítka Insert bude k němu přičtena hodnota z položky Index, výsledným názvem pak bude VertexX0,Y0,Z0. Zbývá dodat, že proměnné budou typu float.

Proměnné napojíme na vlastnost VertexX0,Y0,Z0 v parametrech 

objektu trojúhelníka , opět již bylo posáno. 

Data manager uložíme třeba pod názvem Trojúhelník.mvar. Soubor pak opět zavedeme do Projekt manageru Trojúhelník ale tentokrát jako Variable.

 

Nakonec bude potřeba vytvořit soubory ze skripty a to ze skriptem inicializačním a renderujícím. Inicializační se provede jen jednou, při stisku tlačítka Start runtime,effects script , dodám jen že ke stopu slouží   , po opětném startu se zase vykoná iniskript. 

Příklad ini skriptu :

Dim VertexX0
Dim VertexY0
Dim VertexZ0
Dim ok

VertexX0= -10.0
VertexY0= 0.0
VertexZ0= 0.0
ok = mUserData.SetValue("/Root/UserVar/VertexX0",VertexX0)
ok = mUserData.SetValue("/Root/UserVar/VertexY0",VertexY0)
ok = mUserData.SetValue("/Root/UserVar/VertexZ0",VertexZ0)

A příklad render skriptu :

Dim VertexX0
Dim VertexY0
Dim VertexZ0
Dim ok

VertexX0= 0.0
VertexY0= 0.0
VertexZ0= 0.0

VertexX0= mUserData.GetValue("/Root/UserVar/VertexX0")
VertexX0= VertexX0 + 0.01
ok = mUserData.SetValue("/Root/UserVar/VertexX0",VertexX0)

VertexY0= mUserData.GetValue("/Root/UserVar/VertexY0")
VertexY0= VertexY0 + 0.01
ok = mUserData.SetValue("/Root/UserVar/VertexY0",VertexY0)

VertexZ0= mUserData.GetValue("/Root/UserVar/VertexZ0")
VertexZ0= VertexZ0 + 0.01
ok = mUserData.SetValue("/Root/UserVar/VertexZ0",VertexZ0)

Po spuštění do runtime, se nám začne vrchol Vertex X0,Y0,Z0 trojúhelníka pohybovat dle výpočtu v render skriptu.

Chtěl bych ještě naznačit, že k vrcholu se můžeme dostat přímo bez proměnné a to pomocí příkazu

VertexX0 = mUserData.GetValue("/GF/GL_TRIANGLES/GL_Trojúhelník00/Vertex X0")

Kde /GF říká že se jedná o float typ.