Tie, kas domisi grafika ar animacijomis puikiai žino vieną iš Lietuvoje populiariausių grafikos programų (3ds Max). Su šia programa yra pakankamai paprasta kurti įvairius objektus, nes ji turi daug paruoštų objektų šablonų, kuriems tik belieka nustatyti koordinates. Taip pat su ja yra lengva realizuoti paprastus judesius, kadangi reikia nustatyti tik pradinę ir galutinę objektų ar jų dalių būsenas (padėties koordinates, posūkių kampus, išplėtimo/suspaudimo procentus), o visas tarpines transformacijas atliks pati programa.

Problema, kad 3ds Max formato duomenys užima daug vietos, o pati programa naudoja pakankamai daug kompiuterio resursų. Norint sukurti kokią didelę sceną su įvairiomis tekstūromis ir atspindžiais, reikalingas kompiuteris su galinga vaizdo plokšte, greitu procesoriumi, daug virtualiosios atminties ir laisvos vietos kietajame diske.

Vienas iš vietos taupymo sprendimų yra [.max] formato paprastų duomenų konvertavimas į [.wrl] arba [.wrml] formatą. 3ds Max programa leidžia sukurtus objektus ir judesius eksportuoti į VRML95 kalbą. Palyginti galime keturių geometrinių figūrų 3ds Max dokumento dydį 224 KB ir tų pačių figūrų dokumento dydį 2 KB. Skirtumas akivaizdus.

kalba neturi savo kūrimo programos, patogiausia kodą rašyti Notepad ar Wordpad tekstų redaktoriais, o saugoti reikia su plėtiniu [.wrl]. Norint pamatyti sukurtus objektus ir/ar judesius kalba, reikia atsisiųsti šio kodo peržiūros programėlę iš interneto. Populiariausia ir nemokama - Bitmanagement Software GmbH (BS Contact). Ši peržiūros programa skirta atpažinti /X3D/MPEG4 formatams. Dažniausiai ji naudojama 3d elementų įterpimui į tinklalapį.
VRML screenshot 1

Pirmiausia trumpai supažindinsiu, kas ta kalba. - kalba, kuria paprastai klasėmis ir koordinatėmis aprašomi objektai. Susipažinimui žemiau pateiksiu paprastą kodą:

#VRML V2.0 utf8
 
DEF Box01 Transform {
 
translation 10.00 10.00 10.00
 
children [
 
Shape {
 
appearance Appearance {
 
material Material {
 
diffuseColor 0.0 0.8 0.0
 
}
 
}
 
geometry Box { size 25.00 20.00 15.15 }
 
}
 
]
 
}
 
DEF Sphere01 Transform {
 
translation -20.00 10.00 10.00
 
children [
 
Shape {
 
appearance Appearance {
 
material Material {
 
diffuseColor 0.8 0.0 0.0
 
}
 
}
 
geometry Sphere { radius 10.00 }
 
}
 
]
 
}
 
DEF Cylinder01 Transform {
 
translation 20.00 10.00 -20.00
 
children [
 
Shape {
 
appearance Appearance {
 
material Material {
 
diffuseColor 0.0 0.0 0.8
 
}
 
}
 
geometry Cylinder { radius 10.00 height 15.00 }
 
}
 
]
 
}
 
DEF Cone01 Transform {
 
translation -20.00 10.00 -20.00
 
children [
 
Shape {
 
appearance Appearance {
 
material Material {
 
diffuseColor 0.8 0.8 0.0
 
}
 
}
 
geometry Cone { bottomRadius 10.00 height 15.00 }
 
}
 
]
 
}

Šiame kode aprašyti keturi objektai: stačiakampis gretasienis (geometryBox), sfera (geometrySphere), cilindras (geometryCylinder) ir kūgis (geometryCone). Prefiksas DEF nurodo atskirą klasę. Metodas Transform {} skirtas aprašyti sukurto objekto duomenims. Translation nurodo objekto centro koordinates (x y z). Appearance metode yra objekto savybės: spalva, tekstūra, peršviečiamumas, briaunuotumas ir pan. DiffuseColor R G B – tai spalva RGB spalvų klasėje, tačiau kiekviena spalvos koordinatė kinta [0;1] aibėje.

Eksportuojant susidaro duomenų perteklius: coordIndex, normalIndex, kelios children klasės. Tokius duomenų srautus formate galima drąsiai pašalinti, nes nuo šių duomenų vaizdo kokybė nepakinta. Didelis eksportavimo trūkumas tas, kad [.max] dokumente sukurtos ar priskirtos tekstūros nėra eksportuojamos, tačiau RGB spalvų gama perkeliama gerai.

Judesiai iš vieno formato į kitą perkeliami neblogai. 3ds Max programoje jie kuriami pagal programos kodą, o renderinant tarkim į [.avi] formatą, judesiai yra tolygūs. kalboje judesiai aprašomi laiko davikliais (TimeSensor), interpoliatoriais (pagrindiniai: OrientationInterpolator, PositionInterpolator), kiekvienas interpoliatorius turi raktą (key), kurio aibė [0; 1] suskirstoma pagal pasirinktą laiko žingsnį į intervalus, kada kinta objekto savybės. O kiekvienas raktas turi savo reikšmę (keyValue), kuris nurodo būtent to momento objekto centro koordinates. Galų gale nurodomi keliai (ROUTE), kurie sujungia skirtingus kelius su jų raktais ir sukuria tolygius judesius. Žemiau pateikiu sferos x ir y ašimis judėjimo aprašymą kode:

DEF Sphere01 Transform {
 
translation 43.23 0 7.869
 
children [
 
DEF Sphere01-TIMER TimeSensor { loop TRUE cycleInterval 3.333 },
 
DEF Sphere01-POS-INTERP PositionInterpolator {
 
key [0, 0.03, 0.06, 0.09, 0.12, 0.15, 0.18, 0.21, 0.24, 0.27, 0.3,
 
0.33, 0.36, 0.39, 0.42, 0.45, 0.48, 0.51, 0.54, 0.57, 0.6,
 
0.63, 0.66, 0.69, 0.72, 0.75, 0.78, 0.81, 0.84, 0.87, 0.9,
 
0.93, 0.96, 0.99, 1, ]
 
keyValue [43.23 0 7.869, 42.34 0 7.869, 39.8 0 7.869, 35.84 0 7.869,
 
30.68 0 7.869, 24.56 0 7.869, 17.68 0 7.869, 10.29 0 7.869,
 
2.592 0 7.869, -5.177 0 7.869, -12.8 0 7.869, -20.04 0 7.869,
 
-26.69 0 7.869, -32.52 0 7.869, -37.3 0 7.869, -40.81 0 7.869,
 
-42.83 0 7.869, -43.23 0.02331 7.869, -43.23 0.3578 7.869,
 
-43.23 1.049 7.869, -43.23 2.047 7.869, -43.23 3.3 7.869,
 
-43.23 4.757 7.869, -43.23 6.367 7.869, -43.23 8.079 7.869,
 
-43.23 9.843 7.869, -43.23 11.61 7.869, -43.23 13.32 7.869,
 
-43.23 14.93 7.869, -43.23 16.38 7.869, -43.23 17.64 7.869,
 
-43.23 18.64 7.869, -43.23 19.33 7.869, -43.23 19.66 7.869,
 
-43.23 19.69 7.869, ] },
 
Shape {
 
appearance Appearance {
 
material Material {
 
diffuseColor 0.8824 0.7765 0.3412
 
}
 
}
 
geometry Sphere { radius 13.81 }
 
}
 
]
 
ROUTE Sphere01-TIMER.fraction_changed TO Sphere01-POS-INTERP.set_fraction
 
ROUTE Sphere01-POS-INTERP.value_changed TO Sphere01.set_translation
 
}

Taip pat formate galima naudoti ir kitų programų įskiepius. Dažniausiai naudojami JavaScript įskiepiai judesiams kurti.

Tiek 3ds Max, tiek ir kalboje naudojamas apšvietimas. 3ds Max apšvietimo parinkčių yra daug, galima generuoti šviesos perėjimus, šešėlius ir kt. funkcijas. Eksportuojant į [.wrl] formatą, bus perkeliamas tik šviesos tipas, ir šaltinio buvimo koordinatės. Deja, automatiškai šešėlių negeneruoja, tačiau turi papildomų šviesos nustatymų: intensyvumą, spalvą, apšvietimo ribas ir kt.

Jei taupote vietą ir jums nereikia ypatingų 3d sukuriamų scenų, tam tikrai tiks kalba užrašytos scenos. Jei norite kurti kokybiškas 2d/3d nuotraukas, filmukus, animaciją tuomet dirbkite su kokybiška technika ir naudokite 3ds Max ar kitą tam skirtą programinę įrangą.

Panašūs straipsniai


“3ds Max ir VRML kalbos sintezė” komentarų: 4

  1. Aras Pranckevičius

    Heh… VRML… atgal į 1990-uosius, ar kažkas tokio :)

    Man regis, pagrindinis skirtumas, kodėl ne 3dsmax, o kažkas kitas: tai kad 3dsmax kainuoja nemažai. Ir “vartotojai” jo savo kompiuteriuose neturi.

    …o interaktyvūs 3D internete ir panašiai šiais laikais turbūt daromi kitomis priemonėmis nei VRML. *cough* unity3d.com *cough* :)

  2. Žilvinas Sadauskas

    Blender’is puikiai gali pakeisti 3D max’ą

  3. Eligijus

    teiginys ne visai teisingas: “VRML kalba neturi savo kūrimo programos, patogiausia kodą rašyti Notepad ar Wordpad tekstų redaktoriais, o saugoti reikia su plėtiniu”

    VRML objektus galima kurti nemokama wings 3D programa http://www.wings3d.com
    Savo laiku trimačius objektus kūriau šia programa, o animacijas (judesius, reakcijas i vartotojo veiksmus) rasydavau notepad’u

    ir kiek pamenu 3ds Max sugebedavo eksportuoti VRML tipo failus

  4. egle

    Kur Lietuvoje galima įsigyti 3d 2d animacijos kūrimo programų . Ar įmanoma gauti pigiai ne gamintojo kainomis ?

Rašyti komentarą

Jūs privalote prisijungti jeigu norite rašyti komentarą.