Lights Out..

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

VampireSilence

Betreff: Lights Out..

BeitragSa, Okt 18, 2008 23:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Habe mal ne Frage zu den Lichtern. Und zwar erstelle ich meine Cubes mit folgender Funktion:

Code: [AUSKLAPPEN]
Function CreatePuzzle(x,y,z)

  Local Puzzle

  Puzzle = CreateCube()
  PuzzleLight = CreateLight(2)

  PositionEntity Puzzle,x,y,z
  ScaleEntity Puzzle, 0.433, 0.433, 0.433
  EntityColor Puzzle, 128 + Rand( 0,127 ), 128 + Rand( 0,127 ), 128 + Rand( 0,127 )
  EntityAlpha Puzzle, 0.75

  LightColor PuzzleLight,255,255,255
  LightConeAngles PuzzleLight,0,45
  PositionEntity PuzzleLight,x,y,z
  LightRange PuzzleLight,8
  PointEntity PuzzleLight,Puzzle

  LightConeAngles PuzzleLight,0,0 

  Return Puzzle

End Function


Dabei habe ich aber den unerwünschten Effekt, dass die Cubes nur aus der Sicht von Punkt (0|0|0) aus Sichtbar sind. Von Aussen sind sie alle Schwarz (sehen ein bisschen aus, wie die Erdkugel im All). Ausserdem werden die Farben nicht richtig dargestellt, wenn die Cubes sich von einem bestimmten Vektor entfernen (PositionEntity). Habe schon mit den LightColors/ConeAngles/Types rumgespielt, aber finde einfach nicht das richtige, um diese Effekte zu beheben. Weiss einer Rat ?

EDIT: Da fällt mir noch was ein. Wie kann ich die Kanten der Cubes comicartig nachzeichnen ? So dass ich also einen "ausgemalten" Cube erhalte.

Liebe Grüße
- VampireSilence

ZaP

BeitragSo, Okt 19, 2008 11:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Dein Code ist etwas widersprüchlich, dazu aber später mehr. Viel wichtiger ist, dass DirectX nur 8 Lichter aufeinmal leuchten lassen kann. Ich nehme mal stark an, dass Dein Puzzle aus mehr als nur 8 Teilen besteht.
Du hast in deinem Code zweimal LightConeAngles, soweit ich weiß ist das aber nur bei CreateLight(3) wirklich brauchbar. Sollte ich mich da irren, kann es sein, dass LightConeAngles PuzzleLight,0,0 nicht ganz stimmt. Hoffe ich hab Dir ein bisschen geholfen.
Starfare: Worklog, Website (download)

The_Nici

BeitragSo, Okt 19, 2008 11:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du alles hell machen willst, verwende AmbientLight
 

VampireSilence

BeitragSo, Okt 19, 2008 12:03
Antworten mit Zitat
Benutzer-Profile anzeigen
naya ich hab erst vorgestern mit BB3D angefangen und hab nun einfach mal alle Befehle ausprobiert, die sich gut angehört haben Laughing AmbientLight ist aber auch nicht das richtige, da es auch Cubes geben soll, die nicht beleuchtet sind.

Der zweite ConeAngle-Befehl ist nen überbleibsel aus meiner Testwut. Da hab ich die beiden Befehle abwechselnd auskommentiert, um den Unterschied zu sehen, aber da gab es keinen. Nun weiss ich ya auch warum..

Hab da heute Nacht auch noch so einen Befehl "WireFrame" gefunden, der die Kanten schön darstellt, leider aber nicht mehr den farblichen Inhalt der Cubes. Kann man die beiden Ansichten Evtl kombinieren ?

Liebe Grüße
- VampireSilence

The_Nici

BeitragSo, Okt 19, 2008 12:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Du könntest de auch einfach schwarz einfärben, oder halt EntityFX benutzen.
Btw sowas mit dne Kanten nennt man Toonshading, such mal danach. Wireframe wird dir nichts helfen.
 

VampireSilence

BeitragSo, Okt 19, 2008 14:02
Antworten mit Zitat
Benutzer-Profile anzeigen
[EntityFX Puzzle, 1] sieht schonmal sehr gut aus ! und mit [EntityFX Puzzle, 2] bekommen die Cubes so einen metallischen Glanz, der dann aber nicht mehr Farbig ist, sondern nur noch Graustufen enthält. Kann man das vllt auch irgendwie kombinieren ? Dann wären das quasi farbige Metallkisten, was ziemlich gut passen würde.

Danke schonmal ! Mache mich direkt mal auf die Suche nach "Toonshading"..

Edit: Bin fündig geworden und hab mir mal die Funktion [CreateOutline] von Vertex geklaut. Leider stellt diese Funktion keine Linien dar, die aus Sicht der Camera "vor" dem Cube liegen. Was müsste ich dafür ändern ? Hier mal nen Auszug der Funktion:

Code: [AUSKLAPPEN]
Function CreateOutline(Mesh, Scale#)
   Local Outline, SurfaceCount, S, Surface, VertexCount, V
   Local Position#[2]
   
   Outline = CopyMesh(Mesh, Mesh)
   SurfaceCount = CountSurfaces(Outline)
   For S = 1 To SurfaceCount
      Surface = GetSurface(Outline, S)
      VertexCount = CountVertices(Surface)-1
      For V = 0 To VertexCount
         Position[0] = VertexX#(Surface, V)+VertexNX#(Surface, V)*Scale#
         Position[1] = VertexY#(Surface, V)+VertexNY#(Surface, V)*Scale#
         Position[2] = VertexZ#(Surface, V)+VertexNZ#(Surface, V)*Scale#
         VertexCoords Surface, V, Position[0], Position[1], Position[2]
      Next
   Next
   
   EntityColor Outline, 0, 0, 0
   FlipMesh Outline
   Return Outline
End Function


Is zwar scheinbar für Meshes gedacht, lässt sich aber auch ohne zu meckern auf Cubes() anwenden.

Liebe Grüße
- VampireSilence
 

BadDeath

BeitragSo, Okt 19, 2008 15:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Parameter für Befehle wie EntityFX lassen sich addieren. Wenn du nun also EntityFX Puzzle, 1 UND EntityFX Puzzle, 2 haben möchtest, nimmst du einfach EntityFX Puzzle, 3. (steht aber auch in der Hilfe)
-~= real coders just code in binary =~-
 

VampireSilence

BeitragSo, Okt 19, 2008 17:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Das hab ich auch gemacht, aber das Ergebnis ist optisch keine Addition, sondern die Blöcke werden einfach nur strahlend weiss. Weder die Farbe, noch der Glanz sind dann noch zu sehen..

Liebe Grüße
- VampireSilence

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group