[B3d] Vergessene Commands / Tipps und Tricks

Übersicht BlitzBasic FAQ und Tutorials

Neue Antwort erstellen

 

INpac

Betreff: [B3d] Vergessene Commands / Tipps und Tricks

BeitragDo, Jul 22, 2004 15:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi.

Ich wollte hier mal ein paar Befehle versuchen zu erklären, die immer wieder benachteiligt werden, oder einfach neu und noch zu msyteriös sind.

SetCubeMode cubemapping_texture, mode
mode reciht von 1 bis 3
Als Texture muss eine Cubetex verwendet werden, diese wird abhängig vom Modus dann unterschiedlich gerendert / benutzt oder wie auch immer.

Modus 1 ist der bekannte Reflection-Modus
Modus 2 ist mir noch nicht so bekannt, es soll realses Reflektieren oder so ein, kA

Am interessantesten ist für mich Modus 3
Er igrnoriert die komplette Geometrie des Objektes, auf dem die Cubetex drauf ist. Der Modus simuliert Refraction-Mapping, also Verzerrung.
Wenn man nun Glas darstellen will (man erinnere sich an meinen konfusen Thread im 3d-Graphics-forum Wink ), positioniert man die Camera nicht wie üblich an der Objekt-Position, sondern direkt an der aktuellen playercamera, was dazu führt, dass es zunächst aussieht, als wäre es einfach ein objekt mit entityalpha. ABER man ja dann zugriff auf die Texture, und kann so gefakte Shader anwenden Smile
Zumal kann man mit diesem Modus auch Lupen ganz toll darstellen, kommt alles nur auf die Positionierung der cam an Smile

TextureBlend texture,4
TextureBlend ist sicherlich schon bekannt, modus 4 allerdings kaum..
Er wurde mit dem dot3-normal-mapping feature mitgeliefert.

Ich hab allerdings gesehen, dass es eine Texture eifach schwarz-weiß darstellt, ohne speed-bremsen.
Das ist dann toll, wenn man zB s/w-Nachtsichtgeräte darstellen will, und alle Meshes schwarz-weiß rendern will Smile

GetMatElement( entity,spalte,zeile)
Ist auch ganz praktisch Smile Denn wenn man zB in einem Leveleditor die momentane Entity-Skalierung haben will, sie aber nicht per Variablen mitgespeichert hat, kann man durch diesen Befehl ganz einfach die Werte auslesen Smile
xscale = getmatelement( entity, 1,1 )
yscale = getmatelement( entity, 2,2 )
zscale = getmatelement( entity, 3,3 )

DeltaYaw(sourceentity, targetentity)
Ist schon eher bekannt, wollte ich nur nochmal erwähnen..
Durch diesen Befehl kann man gaaanz einfach (AlignToVector suckt dafür oft) weiches Pointentity realisieren:
Turnentity cam, deltapitch(cam, player)/5, deltayaw(cam,player)/5,0

Jo, das wars, wär toll, wenn's noch andre Leute gäb, die hier was posten Smile
  • Zuletzt bearbeitet von INpac am Fr, Jul 23, 2004 16:49, insgesamt einmal bearbeitet
 

Dreamora

BeitragDo, Jul 22, 2004 16:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Für TextureBlend 4 musst du die Vertexcolors auf die Normalenfarben ändern, damit es einen 3D Effekt erzeugt.

Was aber scheinbar noch nie jemand versucht hat sind negative Farbwerte für Lichter Smile

Man kann Lichter nämlich nicht nur additiv sondern auch subtraktiv einsetzen und so zb schwarz - weiss Bilder erzeugen
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Mr.Keks

BeitragDo, Jul 22, 2004 17:47
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm, ne, das mit negativen lichtern habe ich schon versucht und kann nachvollziehen, warum das keiner nutzt. sind für recht weniges zu gebrauchen.

ich wollte damit schatten machen, aber das ist einfach nicht schön Smile. neuerdings nutze ich sie allerdings, um flackern af einer bsplightmap zu faken Smile

nun, etwas interessantes ist wohl auch, die mögichkeit, die kamera zu skalieren. damit kann man camerazoom, sowie auch vertikale und horizontale verzerrung simulieren.


die am meiste vernachlässigten features sind jedoch immernoch die vertexbefehle. in letzter zeit scheinen sie etwas verbreiteter zu werden, aber viele ihrer tollen möglichkeiten werden einfach nicht richtig genutzt.
man kann mit ihnen meshs deformieren (habe z.b. damit bei meinem dosenwerfen gemacht, dass die dosen verbeult werden) oder schattierte sprites erstellen. schattierte sprites? das habe ich bei meinem planeten im codearchiv gemacht, um die atmosphere darzustellen.
MrKeks.net
 

INpac

BeitragFr, Jul 23, 2004 16:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Dreamora hat Folgendes geschrieben:
Für TextureBlend 4 musst du die Vertexcolors auf die Normalenfarben ändern, damit es einen 3D Effekt erzeugt.

Joja, das Prinzip des Dot3-Mapping ist mir schon klar. Nur, dass dieser Befehl allein angewandt eine Texture einfach nur s/w einfärbt find ich ganz interessant.

Wollte noch einen Tip zum Thema SetCubeMode 3 geben:
Statt einer Skybox mit 12 polygonen und wahrscheinlich 6 surfaces, kann man auch ganz einfach ein sprite erstellen, das an die camera hängen und das sprite mit einer geladenen cubetexture (in dem fall wäre das eine texture, in der alle 6 seiten der skybox hinter einander gespeichert sind, siehe SetCubeFace zur Reihenfolge!) versehen. Die cubetexture muss man dann noch auf mode 3 stellen. somit kann man ganz leicht eine skybox faken, mit viel weniger aufwand Smile

Zusätzlich wollt ich zum Thema Wasser mit cubemapping noch sagen: Die meisten positionieren die cam zum rendern in die cubemap falsch.
Richtig geht es so:
Die Y-Pos der Cam ist die Wasserposition minus DeltaY zwischen main_camera und wasserY:

posy = waterY - (entityy(main_camera) - waterY )

Nur so bekommt man richtige reflexionen auf ebenen flächen.

PS: Ich nenne den Thread mal um
 

INpac

BeitragMo, Aug 30, 2004 12:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm, ich hab noch was witziges:

CreateListener() erstellt ja bekanntlich ein virtuelles Ohr - wenn man mit den drei optionalen (vorllame mit dem RollOff- und Doppler-Parameter!) umspeitl, kann man nette Bullet-Time-Effekte simulieren. Zwar werden die Töne dann nicht langsamer, allerdings werden die Wellen schön verändert, und es kommt oft ein ganz anderer ton raus Very Happy - naja, nicht gerade BulletTime, aber zB fürn "Berseker"-Modus ganz toll Smile ... Oder während des Spielertodes!

D2006

Administrator

BeitragMi, März 15, 2006 14:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

mir ist eben was cooles aufgefallen, dass nicht nur mit neu war.

Dim-Arrays - Felder vom Typ Type

Man kann nicht nur Integer, Float und String Felder anlegen, sonder auch irgend einen Type nehmen.
Beispiel:

Code: [AUSKLAPPEN]
Type bla
   Field x
End Type

Dim test.bla(20,20)


Beim Aufruf, logischerweise, den Field Eintrag nach der Klammer:
Code: [AUSKLAPPEN]
test(1,1) = New bla
test(1,1)\x = 5

test(2,1) = New bla
test(2,1)\x = 10


Mit dieser, mir bisher unbekannten Methode kann man flexiblere TileMaps machen. Durch das Array kann man schnell darauf zugreifen.
Natürlich ist die Sache bei großen Maps dann recht speicherintensiv.

MfG
D2006
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2

Neue Antwort erstellen


Übersicht BlitzBasic FAQ und Tutorials

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group