D7WS HOMEPAGE WORKSHOP NEUE XTRAS GALERIE WORKSHOP Automatic Translation LESERSERVICE BUCH NEWS

Howto: Director 3D Jumpstart

 

 

 

Home
Workshop-Seite

Director 8.5 Startseite

In diesem Abschnitt:

Vectorshapes extrudieren
Dancing Gnome in 3D

Weitere Themen:

Das Grundgerüst für einfache 3D-Behaviors
Kugel erzeugen
Ring von Kugeln erzeugen
Box - von außen und von innen

soon:
Kameras nutzen
Parent-Child-Relationen
SpecialFX
Darsteller speichern
3DPI als Hilfsmittel bei der Skripterstellung

 




 

 

 

 

Vectorshapes extrudieren

Über einen Umweg können Sie auch Vectorshapes extrudieren, sie also in den 3D-Raum übernehmen. Dafür zweckentfremden Sie die #extruder-Modelresource, die eigentlich nur für 3D-Text vorgesehen ist: zunächst wird ein (Dummy-)Text extrudiert, dann die (undokumentierte) Eigenschaft modelresourceRef.vertexlist auf die Vertexliste des Vectorshapes (oder eine beliebige andere Vertexliste) gesetzt.
Hier die Änderungen, die Sie im Listing 1 vornehmen müssen, um den Vectorshape-Darsteller "shape" zu extrudieren:

                                                    Listing 1d
-- --------------------------
-- 1. Darsteller vorbereiten
-- --------------------------
mmb.resetworld() 
-- World Light Properties
mmb.bgcolor = rgb(0,0,0)
mmb.ambientcolor = rgb(128,128,128)
mmb.directionalpreset = #bottomleft
mmb.directionalcolor = rgb(0,0,255)
-- --------------------------
-- 2. Modelresource anlegen
-- --------------------------
if voidP(mmb.modelresource(2)) then
  Res = member("text").extrude3d(mmb, "test")
  Res.beveltype = #miter
  Res.smoothness = 10
  Res.tunneldepth = 10
  Res.beveldepth = 5
  Res.vertexlist = member("shape").vertexlist
else
  Res = mmb.modelresource(2)
end if
-- --------------------------
-- 3. Model anlegen
-- --------------------------
if voidP(mmb.model("Model1")) then
  mymod = mmb.newModel("Model1", Res)
  mymod.transform.rotation = vector(180,0,0)
  mymod.transform.scale = vector(0.5,0.5,0.5)
end if
-- --------------------------
-- 4. Shader anlegen und zuweisen
-- --------------------------
if voidP(mmb.shader("shad")) then
  myShad = mmb.newShader("shad",#standard)
  myShad.renderStyle = #fill
  myshad.texture = VOID
end if
mmb.model("Model1").shader = mmb.shader("shad")

In Schritt 2 werden hier die Eigenschaften des Extruders eingestellt; der Darsteller "text" wird nur als Dummy genutzt, die Vertexlist des Extruders schließlich mit der Vertexlist des Darstellers "shape" überschrieben.




 

 

 

 

Je nach Vectorshape kann es nötig sein, in Schritt 3 die Ansicht zu korrigieren, indem wir das Model rotieren und skalieren. Für das Ergebnis in der Abbildung rechts haben wir außerdem in Schritt 4 mit

myshad.texture = VOID 

die Texturen ausgeschaltet, so dass das Vectorshape einfarbig – in der Farbe, die in Schritt 1 als directionalColor angegeben wurde – erscheint.




 

 

 

 

Dancing Gnome

Ausgehend von diesem Beispiel ist es ein kleiner Schritt, auch den „Dancing Gnome“ aus dem Vectorshape-Abschnitt (D8WS, S. 49ff. und s. 216 ff.) im 3D-Raum nachzubauen. In vier Felddarstellern ("list1" bis "list4") werden die Vertexlisten bereitgehalten, die nun zur Animation des Models genutzt werden. Hierzu modifizieren wir Listing 1d wie folgt:

property mmb
property vLists, counter
on beginsprite me
-- (…)
-- --------------------------
-- 2. Modelresource anlegen
-- --------------------------
  if voidP(mmb.modelresource(2)) then
    Res = member("text").extrude3d(mmb, "test")
    Res.beveltype = #round
    Res.smoothness = 10
    Res.tunneldepth = 30
    Res.beveldepth = 15
    vlists = []
    vlists.add(value(member("list1").text))
    vlists.add(value(member("list2").text))
    vlists.add(value(member("list3").text))
    vlists.add(value(member("list4").text))
    Res.vertexlist = vlists[1]
  else
    Res = mmb.modelresource(2)
  end if
  -- (…)
end
			  
on exitFrame me
  counter = counter + 1
  if counter > vLists.count then counter = 1
  mmb.modelresource(2).vertexlist = vLists[counter]
end

Der exitFrame-Handler weist der Modelresource nacheinander die vier gespeicherten Vertexlisten zu, so dass ein ähnlicher Tanzeffekt entsteht wie im ursprünglichen Beispiel. Das Beispiel finden Sie in PRIMITIVES6.DIR.




 


Directorworkshop.de ist © Joachim Gola & Gerd Gillmaier 1998-2002. Alle Rechte vorbehalten.