**3DMLW** (*3D Markup Language for Web*) on XML-il põhinev märgistuskeel interaktiivse 3D- ja 2D-sisu esitamiseks veebis. See on ka 3DMLW nime kandva 3D Technologies R&D poolt arendatava laiema tarkvaraplatvormi põhiline nurgakivi.

3DMLW platvorm
==============

3DMLW platvorm on avatud lähtekoodiga tarkvarakomplekt, mis on loodud erinevates dünaamilist 3D-sisu näitamist nõudvates projektides rakendamiseks. 3DMLW oma skriptimiskeel pakub mõningaid omapäraseid võimalusi tarkvaraarenduseks ja laiendatav mudeliformaatide tugi võimaldab kasutamist 3D integratsioonivahendina.

Disainerid saava 3D-objekte arendada ja neid veebis avaldada ka siis, kui neil on vaid minimaalsed programmeerimisoskused. Sisuarendajaile pakutakse lihtsustatud arendusprotsessi, loomaks kõikvõimalikke lahendusi alates staatilistest animeeritud kuvadest ja rikkalikest interaktiivsetest esitlustest kuni täismahus mängudeni.

3DMLW keel
----------

3DMLW on XML 1.0 standardil põhinev märgenduskeel, mis võimaldab andmevahetust 3DMLW *plug-in-*liidesega lingitud tarkvararakenduste vahel. Saadavalolev XML-skeem võimaldab vastavat võimalust pakkuvates XML-redaktorites (nt jEdit) kontrollida notatsiooni korrektsust.

3DMLW renderdi
--------------

Renderdusmootor kasutab standardset OpenGL API-t, mis tagab optimaalse jõudluse ja platvormisõltumatuse. Renderdi on ühendatav 3DMLW *plug-in-*liidesega ning koosneb stseeni- ja graafikateegist, mis tagab esimese struktuuridele optimeeritud renderduskonveieri. Stseeniteek on kasutatav ka iseseisvalt võrkude töötleja ja teisendajana ilma seejuures neid renderdamata.

3DMLW *plug-in-*liides
----------------------

*Plug-in-*liides vahendab sisend/väljundsündmusi peremees- (nt veebibrauserid) või iseseisvatest akendest. Liides on laiendatav, et võimaldada integreerimist kolmandate osapoolte tarkvarasse. Vaikimisi on olemas levinumate veebibrauserite tugi.

3DMLW serveri tööriistad
------------------------

Tööriistakomplektis sisalduvad erinevate failitüüpide (obj, 3ds, xyz, pts) pakkteisendajad ja mitme faili üheaegset töötlemist võimaldav tekstuuriatlasegeneraator. Tööriistu võib rakendada serveri poolel 3D-mudelite ja tekstuuride automaatseks teisendamiseks.

3DMLW failivorming
==================

3DMLW fail on lihtne tekstifail, mis sisaldab 3DMLW keele süntaksiga piiritletud käske:

```
<?xml version='1.0' standalone='no'?>
<document>
	<content2d>
		<area width='200' height='100' color='#C0C0C0FF' texture='flower.png' />
	</content2d>
	<content3d id='content' camera='{#cam}'>
		<camera id='cam' class='cam\_rotation' y='10' z='40' viewy='10'/>
		<box name='ground' width='100' height='2' depth='100' color='green' class='ground' />
		<box name='dynamic' y='20' width='10' height='10' depth='10' color='blue' />
	</content3d>
</document>

```

2D- ja 3D-sisu käsitletakse üksteisest sõltumatult, kuid nende kattumine ei ole piiratud. 3D-stseenide animeerimist ja sündmuste töötlemist võimaldab Lua skriptimisvahend. Järgnev skriptilõik demonstreerib värvide hajumist:

```
<script type='text/x-lua'><![CDATA[
 receiver = Reference.get("@receiver");
 c = receiver:attributeColor("color");
 c:setAlpha(c:getAlpha()+1);
 if c:getAlpha()>255 then
 c:setAlpha(0);
 end
 receiver:putAttribute("color", tostring(c));
 ]]>
</script>

```

Toetatud on 3ds-, obj-, an8- ja blend-failivormingutes 3D-mudelite kasutamine. Teistele vormingutele toe lisamine on lihtne 3DMLW *plug-in-*liidese abil.

3DMLW failide laiendiks on .3dmlw ja sarnaselt HTML-iga on nad omavahel lingitavad.

3DMLW kuvamine
==============

3DMLW on kuvatav 3D Technologies R&D pakutavate tarkvaratoodetega, mille hulka kuuluvad *plug-inid* Internet Explorerile ja NPAPI ühilduvusega brauseritele (Mozilla Firefox, Opera jne.), iseseisev vaatur ning sellised kohandatud lahendused nagu 3D Kiosk.

Kolmandate osapoolte tarkvaratoodetele on 3DMLW kuvamisvõime lisatav 3DMLW *plug-in-*liidese abil.

Välisviited
-----------

### Üldine

* 3D Technologies R&D
* Ametlik allalaadimisleht
* Projekt SourceForge'is
* Projekt Freshmeatis

### Dokumentatsioon

* Dokumentatsioon
* Foorum