<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Web3D &#187; tutorial</title>
	<atom:link href="http://web3d.toborowicz.pl/tag/tutorial/feed/" rel="self" type="application/rss+xml" />
	<link>http://web3d.toborowicz.pl</link>
	<description>Portal interaktywnych technologii 3D w Internecie</description>
	<lastBuildDate>Sun, 03 May 2015 18:24:07 +0000</lastBuildDate>
	<language>pl-PL</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.2.38</generator>
	<item>
		<title>Pierwsze kroki w 3D &#8211; przykładowy projekt ActionScript, z użyciem Away3D</title>
		<link>http://web3d.toborowicz.pl/flash/pierwsze-kroki-w-3d-przykladowy-projekt-actionscript-z-uzyciem-away3d/</link>
		<comments>http://web3d.toborowicz.pl/flash/pierwsze-kroki-w-3d-przykladowy-projekt-actionscript-z-uzyciem-away3d/#comments</comments>
		<pubDate>Wed, 07 Dec 2011 12:36:18 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[away3d]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[hello world]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[web3d]]></category>

		<guid isPermaLink="false">http://web3d.net.pl/?p=192</guid>
		<description><![CDATA[<a href="http://web3d.toborowicz.pl/flash/pierwsze-kroki-w-3d-przykladowy-projekt-actionscript-z-uzyciem-away3d/" title="Pierwsze kroki w 3D - przykładowy projekt ActionScript, z użyciem Away3D"></a>Za wyjątkiem CopperCube oraz narzędzia PreFab do silnika Away3D, wszystkie przedstawione rozwiązania były mniej lub bardziej skomplikowanymi bibliotekami napisanymi w ActionScript. Aby stworzyć za ich pomocą trójwymiarowe sceny i opublikować je jako obiekt, który może być odtwarzany przez Flash Player, &#8230;<p class="read-more"><a href="http://web3d.toborowicz.pl/flash/pierwsze-kroki-w-3d-przykladowy-projekt-actionscript-z-uzyciem-away3d/">Read more &#187;</a></p>]]></description>
	<a href="http://web3d.toborowicz.pl/flash/pierwsze-kroki-w-3d-przykladowy-projekt-actionscript-z-uzyciem-away3d/" title="Pierwsze kroki w 3D - przykładowy projekt ActionScript, z użyciem Away3D"></a>			<content:encoded><![CDATA[<p><img class="alignleft wp-image-276 size-thumbnail" title="Flex" src="http://web3d.toborowicz.pl/wp-content/uploads/2011/12/Flex-Logo-150x150.png" alt="Flex logo" width="150" height="150" />Za wyjątkiem CopperCube oraz narzędzia PreFab do silnika Away3D, wszystkie przedstawione rozwiązania były mniej lub bardziej skomplikowanymi bibliotekami napisanymi w ActionScript. Aby stworzyć za ich pomocą trójwymiarowe sceny i opublikować je jako obiekt, który może być odtwarzany przez Flash Player, musimy użyć odpowiednio skonfigurowanego środowiska programistycznego (IDE). Najpopularniejsze z nich to komercyjny Adobe Flash Builder (<a href="http://www.adobe.com/products/flash-builder.html" target="_blank">link</a>) (znany wcześniej jako Flex Builder) oraz FlashDevelop (<a href="http://www.flashdevelop.org/wikidocs/index.php?title=Main_Page" target="_blank">link</a>). Każde z nich ma swoje wady i zalety (<a href="http://www.accelermedia.com/content/flash-actionscript-editor-flex-builder-vs-flashdevelop" target="_blank">link</a>), pierwsze z nich jest oparte o Eclipse &#8211; może korzystać z wszelkich rozszerzeń stworzonych dla tego środowiska, posiada też dużą społeczność, co pozwala na łatwiejsze uzyskanie pomocy na wszelkiego rodzaju forach. Flash Builder jest też pomocny jeśli korzystamy z języka Flex, gdyż zawiera wizualny edytor MXML. FlashDevelop jest natomiast dużo lżejszy i przejrzystszy, a przede wszystkim jest oprogramowaniem otwartym (Builder jest natomiast bezpłatny dla celów edukacyjnych, oraz dla bezrobotnych twórców). Do tworzenia aplikacji Flashowych we FlashDevelop, należy dodatkowo pobrać udostępniony przez Adobe zestaw narzędzi programistycznych Flex SDK (<a href="http://opensource.adobe.com/wiki/display/flexsdk/Flex+SDK" target="_blank">link</a>).</p>
<p><span id="more-192"></span>Żeby skorzystać z którejś z bibliotek, należy najczęściej pobrać jej kod źródłowy, a następnie skompilować go, przy pomocy jednego z wybranych wcześniej środowisk programistycznych. Zazwyczaj, rozwijające się, otwarte projekty, udostępniają najnowszą wersję swojego kodu źródłowego na serwerze SVN &#8211; w dalszej części zaprezentowany zostanie przykładowy kod dla aplikacji stworzonej przy pomocy Away3D (<a href="http://away3d.googlecode.com/svn/" target="_blank">link</a>).</p>
<p>Po skonfigurowaniu środowiska, należy utworzyć nowy projekt ActionScript 3.0 i podać ścieżkę do biblioteki Away3D. Kod potrzebny do stworzenia prostej sceny przedstawiającej szkielet trójwymiarowej kuli wymaga napisania kilku linijek. Przede wszystkim należy zaimportować elementy biblioteki Away3D oraz Flash. Następnie ustawiamy scenę i inicjujemy PaperVision3D, z którego wywodzi się biblioteka Away3D. Łączymy nowo utworzoną scenę, kamerę oraz widok, który następnie odpowiednio ustawiamy. W obrębie sceny tworzymy materiał, po czym tworzymy kulę zbudowaną z tego materiału. Umieszczamy kulę na scenie. Ostatnie linijki zawierają polecenie wygenerowania obrazu.</p>
<pre>        1     package {
        2     import away3D.cmeras.Camera3D;
        3     import away3D.containers.Scene3D;
        4     import away3D.containers.View3D;
        5     import away3D.core.base.Vertex;
        6     import away3D.materials.WireColorMaterial;
        7     import away3D.materials.WireframeMaterial;
        8     import away3D.primitives.LineSegment;
        9     import away3D.primitives.Sphere;
        10    import flash.display.Sprite;
        11    import flash.display.StageAlign;
        12    import flash.display.StageScaleMode;
        13    import flash.events.Event;
        14    public class Example001 extends Sprite {
        15    private var scene:Scene3D;
        16    private var camera:Camera3D;
        17     private var view:View3D;
        18     public function Example001() {
        19      // ustawiamy scene
        20      stage.align = StageAlign.TOP_LEFT;
        21      stage.scaleMode = StageScaleMode.NO_SCALE;
        22      // inicjujemy Papervision3D
        23      init3D();
        24      // tworzymy obiekt 3D
        25      createScene();
        26      // inicjujemy Event loop
        27      this.addEventListener(Event.ENTER_FRAME, loop);
        28     }
        29     private function init3D():void {
        30      // tworzymy nową scenę
        31      scene = new Scene3D();
        32      // tworzymy kamerę i ustawiamy jej parametry
        33      camera = new Camera3D({zoom:20, focus:30, x:-100, y:-100, z:-500});
        34      // tworzymy widok
        35      view = new View3D({scene:scene, camera:camera});
        36      // centrujemy widok
        37      view.x = stage.stageWidth / 2;
        38      view.y = stage.stageHeight / 2;
        39         addChild(view);
        40     }
        41     private function createScene():void {
        42      // tworzymy materiał kuli
        43      var sphereMaterial:WireColorMaterial = new WireColorMaterial(0x000000,
        44        {wirecolor:0xFFFFFF});
        45      // tworzymy kulę ze zdefiniowanym wcześniej materiałem
        46      var sphere:Sphere = new Sphere({material:sphereMaterial, radius:50, segmentsW:10, segmentsH:10});
        47      // ustawiamy kulę w przestrzeni (domyślne współrzędne -[0, 0, 0])
        48      sphere.x = -100;
        49      scene.addChild(sphere)
        50     }
        51      private function loop(event:Event):void {
        52      // generujemy scenę
        53      view.render();
        54      }
        55    }
        56  }</pre>
<p>Jak widać, proces tworzenia trójwymiarowej sceny przy pomocy zewnętrznych bibliotek we Flashu nie jest tak bezpośredni i prostolinijny, jak przy pomocy wizualnych edytorów. Należy jednak pamiętać, że samo tworzenie i umieszczanie obiektu zamknęło się w czterech linijkach kodu &#8211; pozostała otoczka jest powtarzana w każdym nowym projekcie.</p>
<p>Wszystkie powyżej opisane rozwiązania dają sobie doskonale radę, jednak ich trzeci wymiar opiera się w głównej mierze na symulacji wyświetlania grafiki 3D w dwuwymiarowym środowisku Flash, do którego dodano perspektywę i projekcję (<a href="http://labs.adobe.com/technologies/flashplatformruntimes/features/stage3d.html" target="_blank">link</a>) &#8211; dzięki temu płaski obiekt można przedstawić w przestrzeni. Niektórzy twórcy mówią w tym wypadku w 2.5D, albo „pocztówkach w przestrzeni”. Dodatkowo, wszystkie te efekty są generowane programowo, w wyniku czego szczegółowość obiektów i ilość elementów z których składa się scena są ograniczone. Jednak Adobe zapowiedziało, że w nowej wersji Flash Playera wszystko ulegnie &#8211; nareszcie dostępna będzie sprzętowa akceleracja grafiki.</p>
<ul>
<li>Away3d SVN: <a href="http://away3d.googlecode.com/svn/" target="_blank">http://away3d.googlecode.com/svn/</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://web3d.toborowicz.pl/flash/pierwsze-kroki-w-3d-przykladowy-projekt-actionscript-z-uzyciem-away3d/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java 3D</title>
		<link>http://web3d.toborowicz.pl/java/java-3d/</link>
		<comments>http://web3d.toborowicz.pl/java/java-3d/#comments</comments>
		<pubDate>Fri, 02 Dec 2011 14:43:12 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[hello world]]></category>
		<category><![CDATA[historia]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[java3d]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[web3d]]></category>

		<guid isPermaLink="false">http://web3d.toborowicz.pl/?p=74</guid>
		<description><![CDATA[<a href="http://web3d.toborowicz.pl/java/java-3d/" title="Java 3D"></a>Historycznie pierwszym i najbliżej związanym z Java interfejsem programistycznym jest Java 3D. Projekt zapoczątkowany był przez Sun i innych liderów branży programistycznej, a jego pierwsza wersja została udostępniona publiczności w 1998 roku. Na początku roku 2000, rozwój Java 3D został &#8230;<p class="read-more"><a href="http://web3d.toborowicz.pl/java/java-3d/">Read more &#187;</a></p>]]></description>
	<a href="http://web3d.toborowicz.pl/java/java-3d/" title="Java 3D"></a>			<content:encoded><![CDATA[<p>Historycznie pierwszym i najbliżej związanym z Java interfejsem programistycznym jest Java 3D. Projekt zapoczątkowany był przez Sun i innych liderów branży programistycznej, a jego pierwsza wersja została udostępniona publiczności w 1998 roku. Na początku roku 2000, rozwój Java 3D został zaniechany na rzecz wciąż rozwijanego projektu JavaFX, którego głównym przeznaczeniem są tzw. bogate aplikacje internetowe (RIA &#8211; Rich Internet Applications). W 2008 roku producent udostępnia kod źródłowy biblioteki na licencji GPL (<a href="http://www.java.net/node/666487" target="_blank">link</a>) i od tego momentu projekt rozwijany jest przez społeczność skupiona wokół Sun oraz Javy.</p>
<p><span id="more-74"></span>Java 3D (<a href="http://java3d.java.net/" target="_blank">link</a>) jest darmowa biblioteka służącą do generowania obrazów 3D, która wykorzystuje graf sceny do organizacji wirtualnych obiektów, które są następnie rysowane na ekranie. Rozszerzenie to zostało zaprojektowane w taki sposób, aby moc obsłużyć zarówno wizualizacje prostych obiektów, jak i tworzenie zaawansowanych gier (<a href="http://java.sun.com/developer/onlineTraining/java3d/j3d_tutorial_ch1.pdf" target="_blank">link</a>). Java 3D przede wszystkim zajmuje się logika aplikacji i uporządkowaniem trójwymiarowych obiektów, natomiast obraz generowany jest przy pomocy narzędzi niskiego poziomu &#8211; OpenGL lub Direct3D. Zastosowanie tych standardów umożliwia korzystanie z dobrodziejstw sprzętowej akceleracji (<a href="http://www.cc.com.pl/pl/newsrel/g3d/artykul_java_3d.pdf" target="_blank">link</a>). Ponadto biblioteka umożliwia obsługę wielu wyświetlaczy, programów cieniujących (programable shaders), a także dźwięku przestrzennego.</p>
<p>Należy pamiętać, że Java 3D, chociaż nie daje zupełnej kontroli nad samym procesem generowania obrazu, jest pełnokrwistym językiem programowania. Pozwala na wykorzystywanie zaawansowanych struktur danych i architektury obiektowej. Z jednaj strony daje to nieograniczone możliwości, z drugiej jednak, każda aplikacja obarczona jest charakterystycznym dla Javy narzutem w warstwie abstrakcji, który wzmaga się wraz ze wzrostem komplikacji programu. Na stronie domowej projektu dostępna jest pełną dokumentacja (<a href="http://java3d.java.net/" target="_blank">link</a>), można również znaleźć kilka oficjalnych tutoriali (<a href="http://www.java3d.org/tutorial.html" target="_blank">link</a>), chociaż całość zdaje się być odrobinę zapomniana i zaniedbana, o czym świadczyć może wiele niedziałających odnośników Przykładowy program z oficjalnego poradnika Java 3D (<a href="http://www.java3d.org/tutorial.html" target="_blank">link</a>) rysujący oświetloną kule.</p>
<pre>        1     import com.sun.j3D.utils.geometry.*;
        2     import com.sun.j3D.utils.universe.*;
        3     import Javax.media.j3D.*;
        4     import Javax.vecmath.*;
        5     public class Ball {
        6       public Ball() {
        7         // tworzymy Wszechświat
        8         SimpleUniverse universe = new SimpleUniverse();
        9         // tworzymy strukturę, która będzie zawierać obiekty
        10        BranchGroup group = new BranchGroup();
        11        // tworzymy kulę i dodajemy ją do grupy obiektów
        12        Sphere sphere = new Sphere(0.5f);
        13        group.addChild(sphere);
        14        // tworzymy czerwone światło
        15        Color3f light1Color = new Color3f(1.8f, 0.1f, 0.1f);
        16        BoundingSphere bounds =
        17        new BoundingSphere(new Point3D(0.0,0.0,0.0), 100.0);
        18        Vector3f light1Direction = new Vector3f(4.0f, -7.0f, -12.0f);
        19        DirectionalLight light1
        20  	      = new DirectionalLight(light1Color, light1Direction);
        21        light1.setInfluencingBounds(bounds);
        22        group.addChild(light1);
        23        // ustawiamy widok w kierunku kuli
        24        universe.getViewingPlatform().setNominalViewingTransform();
        25        // dodajemy stworzoną grupę obiektów do Wszechświatu
        26        universe.addBranchGraph(group);
        27      }
        28      public static void main(String[]args) { new Ball(); }
        29      }</pre>
<ul>
<li>Java 3D: <a href="http://java3d.java.net/" target="_blank">http://java3d.java.net/</a></li>
<li>Getting Started with the Java 3D API: <a href="http://java.sun.com/developer/onlineTraining/java3d/j3d_tutorial_ch1.pdf" target="_blank">http://java.sun.com/developer/onlineTraining/java3d/j3d_tutorial_ch1.pdf</a></li>
<li>Java 3D Tutorial: <a href="http://www.java3d.org/tutorial.html" target="_blank">http://www.java3d.org/tutorial.html</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://web3d.toborowicz.pl/java/java-3d/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hello Virtual Reality World, czyli podstawy VRML</title>
		<link>http://web3d.toborowicz.pl/vrml/hello-virtual-raelity-world-czyli-podstawy-vrml/</link>
		<comments>http://web3d.toborowicz.pl/vrml/hello-virtual-raelity-world-czyli-podstawy-vrml/#comments</comments>
		<pubDate>Thu, 01 Dec 2011 12:09:24 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[VRML]]></category>
		<category><![CDATA[hello world]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[web3d]]></category>

		<guid isPermaLink="false">http://web3d.toborowicz.pl/?p=18</guid>
		<description><![CDATA[<a href="http://web3d.toborowicz.pl/vrml/hello-virtual-raelity-world-czyli-podstawy-vrml/" title="Hello Virtual Reality World, czyli podstawy VRML"></a>VRML to format opisu interaktywnej grafiki 3D ukierunkowany na sieć WWW. Pozwala na wyświetlanie podstawowych kształtów takich jak sześcian, stożek lub sfera, ale umożliwia również bardziej wyszukane modelowanie obiektów przy pomocy grup punktów lub płaszczyzn. Obsługuje proste oświetlenie sceny bez &#8230;<p class="read-more"><a href="http://web3d.toborowicz.pl/vrml/hello-virtual-raelity-world-czyli-podstawy-vrml/">Read more &#187;</a></p>]]></description>
	<a href="http://web3d.toborowicz.pl/vrml/hello-virtual-raelity-world-czyli-podstawy-vrml/" title="Hello Virtual Reality World, czyli podstawy VRML"></a>			<content:encoded><![CDATA[<p>VRML to format opisu interaktywnej grafiki 3D ukierunkowany na sieć WWW. Pozwala na wyświetlanie podstawowych kształtów takich jak sześcian, stożek lub sfera, ale umożliwia również bardziej wyszukane modelowanie obiektów przy pomocy grup punktów lub płaszczyzn. Obsługuje proste oświetlenie sceny bez rzucania cieni (światło typu ambient, direct, point, spot). Możliwe jest nakładanie tekstur na obiekty (również tekstur animowanych &#8211; plików w formacie MPEG) oraz ich transformacja. Modele mogą być wyświetlane z różną dokładnością &#8211; mechanizm level of details daje kontrole nad stopniem skomplikowania wyświetlanego obiektu, a co za tym idzie, nad szybkością i płynnością działania. Przy pomocy skryptów możliwe jest animowanie elementów sceny, także poprzez interpolacje klatek kluczowych (ang. keyframes) (<a href="http://www.few.vu.nl/%7Eeliens/mma1/@archive/interactive/toc.html" target="_blank">link</a>).</p>
<p><span id="more-18"></span>VRML był od początku tworzony z myślą o konkretnym celu &#8211; nawigacja w trójwymiarowym środowisko na wzór rzeczywistości wirtualnej. Posiada zatem pewne domyślnie zaimplementowane funkcje wspomagające interakcje z użytkownikiem i zapewniające większe „zanurzenie” w wirtualny świecie (większą imersję). Czujniki wykrywające kolizje, bliskości i widzialności obiektów, a także przeciągania (dragging &#8211; obiekt można przesuwać po scenie przy pomocy myszki). Zdarzenia uruchamiane mogą być w odpowiedzi na dane akcje (na przykład klikniecie w obiekt) lub kiedy użytkownik pojawi się w zdefiniowanym polu. Światy, w prosty sposób, wzbogacone być mogą również o efekty dźwiękowe, tło lub mgle (<a href="http://www.scintillatinggraphics.com.au/VRMLmagic/VRMLInfo.html" target="_blank">link</a>).</p>
<p>Ponieważ VRML projektowany był jako „interfejs dla internetu” posiada pewne idee zaczerpnięte z HTML oraz pozwalające na jego integracje z tym językiem. Metafora hipertekstu realizowana jest tutaj poprzez odnośniki, które nie są tekstem, ale obiektami 3D. Po kliknięciu w taki obiekt użytkownik przenoszony jest do innego świata VRML (osobny plik .wrl) lub do dowolnej strony pod innym adresem URL. Podobnie jak pliki graficzne na stronie WWW, modele 3D mogą być przechowywane w osobnych plikach i „doładowywane” już w trakcie eksploracji sceny przez użytkownika. Większość przeglądarek VRML umożliwiało kilka typów nawigacji, miedzy innymi symulacje chodu (walk &#8211; poruszanie się jedynie w dwóch płaszczyznach) lub latania (fly &#8211; ruch możliwy w każdym z 3 kierunków).</p>
<p>Pliki VRML mają rozszerzenie .wrl, od angielskiego słowa world (świat) i kodowane powinny być w formacie UTF-8. Plik .wrl może zostać skompresowany aby zaoszczędzić miejsce &#8211; zyskuje wtedy rozszerzenie .wrl.gz. Pomimo tego, że VRML ma silne powiązania ze stronami internetowymi, jego struktura nie bazuje na znacznikach, tak jak w HTML. Składnia oparta jest na formacie Open Inventor, który służył jako podstawa do stworzenia VRML (<a href="http://tecfa.unige.ch/guides/vrml/vrmlman/" target="_blank">link</a>).</p>
<p>Najprostszy plik .wrl jaki możemy napisać i wyświetlić w przeglądarce, składa się z nagłówka, komentarzy oraz obiektów (tzw. węzłów).</p>
<ol>
<li>#VRML V2.0 utf8</li>
<li># Najprostszy plik VRML</li>
<li>Shape {</li>
<li>geometry Box {</li>
<li>size 1 1 1</li>
<li>}</li>
<li>appearance Appearance {</li>
<li>material Material { diffuseColor 1 0 0 }</li>
<li>}</li>
<li>}</li>
</ol>
<p>Najprostszy plik VRML. W pierwszej linii nagłówek, druga linia zawiera komentarz. W pozostałej części pliku zdefiniowany jest czerwony prostopadłościan.</p>
<p>W pierwszej linijce musi znajdować się nagłówek informujący przeglądarkę, że ma do czynienia z plikiem w formacie VRML. Linia nagłówka, podobnie jak komentarze, rozpoczynają się od znaku #. Nic co znajduje się miedzy tym znakiem, a końcem linii, nie jest przetwarzane przez przeglądarkę.<br />
W dalszej części zdefiniowano czerwony prostopadłościan. Mamy zatem węzeł Shape, który charakteryzowany jest przez dwa węzły: geometry oraz appearance. Geometry Box nadaje mu kształt prostopadłościanu o wymiarach 1 na 1 na 1. VRML korzysta z prawoskrętnego ortogonalnego układu współrzędnych &#8211; poszczególne liczby określają rozmiar bryły w kierunku X, Y oraz Z. Przyjmuje się, że jednostka miary są metry, ale jest to jedynie konwencja, której nie wszyscy twórcy przestrzegają. Wymiary mogą być liczbami dziesiętnymi (możemy zapisać 1.0 1.0 1.0).<br />
Węzeł appearance Appearance definiuje materiał z którego jest zrobiony prostopadłościan. Wybrano matowy kolor (diffuseColor) o wartościach wyrażonych w substraktywnym modelu RGB (czerwony, zielony, niebieski). Każda liczba odpowiada jednej składowej i może przyjmować wartości od 0.0 do 1.0.</p>
<p>Węzły w pliku VRML są ułożone hierarchicznie w grafie. Wiele programów i technologii związanych z tworzeniem grafiki trójwymiarowej korzysta z takiej struktury. Po pierwsze, taki sposób uporządkowania elementów ułatwia ich późniejsze odwzorowanie na niższym poziomie generowania obrazu (OpenGL, Direct3D). Po wtóre, ułatwia to kontrole nad obiektami w obrębie sceny.</p>
<p>Idea grafu sceny (scene graph) polega na tym, że każdy element znajdujący się wyżej w hierarchii, wpływa na elementy będące niżej. Należy zaznaczyć, że nie tylko widzialne elementy (bryły lub modele) mogą być częścią grafu, ale również transformacje i materiały. W ten sposób, jeśli jakiś obiekt składa się z kilku prostszych obiektów, nie ma potrzeby, aby każdemu z osobna nadawać te same cechy. Można umieścić node nadający takie cechy na szczycie grafu i będzie on wpływał na wszystkie podległe mu obiekty.</p>
<p>Wiedząc na czym polega „metafora” grafu, łatwiej będzie zrozumieć kolejny plik .wrl, w którym wygenerujemy proste trójwymiarowe drzewo z gałązką. Istotną nowością w tym kodzie jest węzeł Transform. Jest on odpowiedzialny za zmianę położenia układu współrzędnych względem którego rysowane są obiekty. Należy pamiętać, że w VRML bryły rysowane są „od środka”. Oznacza to tyle, że jeśli stworzymy sferę o promieniu 1, to jej środek będzie się znajdował w punkcie 0 0 0.</p>
<ol>
<li>#VRML V2.0 utf8</li>
<li>#Zielona korona</li>
<li>Shape {</li>
<li>geometry Sphere { radius 1.5 }</li>
<li>appearance Appearance {</li>
<li>material Material { diffuseColor 0 1 0 }</li>
<li>}</li>
<li>}</li>
<li>#Brązowywy pień i gałązka</li>
<li>Transform {</li>
<li>translation 0 -2.5 0</li>
<li>children [</li>
<li>Shape {</li>
<li>geometry Cylinder {</li>
<li>radius 0.2</li>
<li>height 2.0</li>
<li>}</li>
<li>appearance Appearance {</li>
<li>material Material { diffuseColor 0.5 0.15 0.05 }</li>
<li>}</li>
<li>}</li>
<li>Transform {</li>
<li>translation -0.5 0.5 0</li>
<li>rotation 0 0 1 1.0472</li>
<li>children [</li>
<li>Shape {</li>
<li>geometry Cylinder {</li>
<li>radius 0.1</li>
<li>height 1.0</li>
<li>}</li>
<li>appearance Appearance {</li>
<li>material Material { diffuseColor 0.5 0.15 0.05 }</li>
<li>}</li>
<li>}</li>
<li>]</li>
<li>}</li>
<li>]</li>
<li>}</li>
</ol>
<p>Kod VRML za pomocą którego wygenerować można trójwymiarowe drzewo.</p>
<p>Na początku rysujemy kulę o promieniu 1.5 jednostki (linia 4) i nadajemy jej kolor zielony (linie 5-6) &#8211; będzie mogła udawać koronę drzewa. Następnie, przesuwamy nasz układ współrzędnych o 2,5 jednostki wzdłuż osi Y (linia 12) i rysujemy cylinder (linie 14-17) o kolorze brązowym (linie 19-20), który służyć ma jako pień drzewa. Ponownie przesuwamy (linia 24) układ współrzędnych, ale tym razem dodajemy również obrót (linia 25) &#8211; pozwoli nam to narysować boczną gałąź (linie 26-33).</p>
<p>Boczna gałązka utworzona jest o 0,5 jednostki w lewo (czyli wzdłuż osi X) i o 0,5 jednostki do góry (w rozumieniu, wzdłuż osi Y), względem środka pnia. Dzięki takiemu powiązaniu &#8211; gdybyśmy obrócili cały pień &#8211; gałąź obróciłaby się samoczynnie w odpowiedni sposób. Gdyby gałąź była niezależnym obiektem &#8211; należałoby samemu zadbać o to, aby narysowana została we właściwym położeniu. Oczywiście, w rzeczywistym zastosowaniu, należałoby również koronę drzewa umieścić w węźle Transform, aby móc całość traktować jako jeden obiekt. Jednak na potrzeby tego modelu nie zrobiono tego, dla zwiększenia przejrzystości.</p>
<p>Mam nadzieję, że ten krótki przykład, pozwala zaprezentować, jak potężnym, a zarazem prostym narzędziem był VRML. Poza modelowaniem, pamiętać należy o mechanizmach wspomagających interaktywność oraz multimedialność. Bez zdolności programistycznych, ani specjalistycznych narzędzi, można było kreować świat, który mógł nie tylko efektownie wyglądać, ale również reagować na akcje użytkownika. Jeśli podstawowe możliwości nie wystarczały twórcom, mogli zawsze skorzystać z skryptów napisanych w językach wyższego programowania, które znacznie rozszerzały możliwości VRML. W tym znaczeniu, standard ten mógł przynieść grafikę 3D „pod strzechy”. Rzeczywistość okazała się jednak zgoła odmienna&#8230;</p>
<p>VRML, w zamyśle jego twórców, miał zrewolucjonizować sposób w jakim poruszamy się po internecie. Miał też umożliwić wymianę grafiki trójwymiarowej poprzez sieć i wykorzystanie jej do budowania multimedialnych, interaktywnych scen, które wyświetlić można na zwykłych komputerach osobistych. Standard miał być przystępny dla każdego, kto chciał się zająć tego typu twórczością, a prawdopodobnie było wielu takich ludzi, gdyż wirtualna rzeczywistość była tematem bardzo modnym i chodliwym w latach gdy powstawał VRML.</p>
<ul>
<li>VRML Interactive Tutorial: <a href="http://www.few.vu.nl/%7Eeliens/mma1/@archive/interactive/toc.html" target="_blank">http://www.few.vu.nl/~eliens/mma1/@archive/interactive/toc.html</a></li>
<li>VRML Primer and Tutorial: <a href="http://tecfa.unige.ch/guides/vrml/vrmlman/" target="_blank">http://tecfa.unige.ch/guides/vrml/vrmlman/</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://web3d.toborowicz.pl/vrml/hello-virtual-raelity-world-czyli-podstawy-vrml/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
