[B3d] StencilSchatten

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

lucifer

Betreff: [B3d] StencilSchatten

BeitragFr, Apr 28, 2006 16:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe ein kleines Schatten System programmiert. Es nutzt die DLL von tom aus dem englischen BBForum um auf den StencilBuffer zu zugreifen.

Es werden nicht anmierte Meshes und anmierte B3DMeshes unterstüzt. Ebenfalls kann man mehrer Lichter erstellen.

Folgen Funktionen sind vorhanden:

SHW_Init(Cam, Alpha# = 0.3)
Diese Funktion intialisiert das SchattenSystem. Als Cam muss man die Hauptkamera angeben. Alpha legt den Alphawert des Schattensfest.

SHW_AddLight(light,Range#)
Diese Funktion fügt ein Licht zum Schatten system hinzu. Range gibt dabei an wie weit ein Mesh maximal entfernt sein darf damit der Schatten noch gezeichnet wird.

SHW_RemoveLight(light,Range#)
Diese Funktion löscht das angeben Licht aus dem Schatten System.

SHW_AddCaster(Entity,Ani = false,FileName$ = "")
Diese Funktion fügt ein Objekt das Schatten wirft zum Schatten System hinzu.
Entity ist das Entity das den Schatten wirft. Ani gibt an ob es anmiert ist oder nicht. Wenn es anmiert ist muss man in FileName den Dateiname der B3DDatei angeben.

SHW_Update()
Diese Funktion aktualisiert das SchattenSystem, d.h. alle SchattenVolumen werden neu berechnet.

SHW_RenderAndUpdateWorld()
Diese Funktion erstezt RenderWorld() und UpdateWorld(). Statt:
Code: [AUSKLAPPEN]

Renderworld()
Updateworld()

muss man also schreiben
Code: [AUSKLAPPEN]

SHW_RenderAndUpdateWorld()


SHW_Free()
Diese Funktion gibt alles was zum SchattenSystem gehöhrt wieder frei.

Hier kann man es herunterladen:
Screenshot
Download

Bedarf sicher noch einiges an Arbeit um wircklihc gut zu werden. Allerdings ist es eine gute Grundlage meiner Meinung nach. In dem Archiv ist eine Datei: StencilShadowTest.bb
Da könnt ihr das Schatten System im Einsatz sehen.
Ihr benötigt übrigens mindestens die Blitzbasic version 1.88

Bekannte Fehler:
-Wenn das licht 90° von oben auf einen nicht anmierten Mesh scheint wird dar Schatten nicht dargestellt.
Aktuelles Projekt:
Demonspawn
RPG
 

FBI-blitz

BeitragFr, Apr 28, 2006 21:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei mir kommt der Fehler "Function 'setrenderstate' not found in der StencilShadow.bb

lucifer

BeitragSa, Apr 29, 2006 11:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Hast du die .decl Datei in den Userlib Ordner kopiert?
Aktuelles Projekt:
Demonspawn
RPG
 

FBI-blitz

BeitragSa, Apr 29, 2006 12:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh, ganz vergessen Embarassed

Jetzt funktionierts


Sieht gut aus. Werd mal schaun ob ich dafür verwendung habe...

skatanist

BeitragSa, Apr 29, 2006 18:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Respekt, das sieht ja schon ganz gut aus!

Leider hab ichs mit meinem Bone-animierten B3D Objekt nicht hinbekommen.
Mein vermuteter Grund:
Es ist zusammengesetzt aus eigentlich 3 Meshes, damit ich zB eine Laufani hab, aber trotzdem noch den Oberkörper mit der Waffe in eine belieblige Richtung ausrichten kann.
Darauf ist das Programm wohl nicht vorbereitet...
Ausserdem bekomm ich Probleme beim Frametweening.

Lösungsvorschläge?

Und nochetwas, ist es nicht möglich nur bestimmte Objekte als Schattenempfänger zu definieren? Es nervt schon ziemlich, wenn das System versucht, Schatten auf meine Patrikel zu werfen, und dabei Fehler produziert, weil die zwischendurch nciht gehidet sind...
Ich meine das so, das alle Nicht-Empfänger Objekte auch nich gehided werden müssen.
Ist das überhaupt möglich?

Naja, aufjedenfall, mach weiter! Bis jetzt hat es noch NIEMAND geschafft ein brauchbares Stencilshadow System zusammenzubringen, was kostenlos ist!

Ray-Tracer

BeitragSa, Apr 29, 2006 20:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Juupiii !

Stencils für anims
geile Sache

-habs kurz getestet ,funktioniert.

-leider nur knapp 30 Fps bei mir

-habs noch mit anderen animierten b3d´s versucht ,
-bei b3d´s mit zwei Texturen funktionierts nicht
bei den anderen ok, allerdings viele Artefakte

mach weiter Lucifer ,coole Sache
__wunschklang__

lucifer

BeitragSo, Apr 30, 2006 23:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke erstmal für das positive Feedback.
Bisher werden keine anmierte Meshes mit mehrer Surfaces unterstüzt. Sollte aber kein Problem sein das zu ändern, mache ich mich demnächst mal dran.
Ja ist kein problem zu implementieren, dass nur mache Objekte Schatten empfangen. Werde ich mich auch noch dran machen.
Aktuelles Projekt:
Demonspawn
RPG

lucifer

BeitragMo, Mai 01, 2006 21:51
Antworten mit Zitat
Benutzer-Profile anzeigen
So eine kleine Änderung. Es ist jetzt möglich Entitys zu definieren die keinen Schatten empfange.
Folgende Funktionen sind hinzu gekommen:

SHW_RemoveCaster(Entity)
Diese Funktion löscht ein Objekt das einen Schatten wirft.

SHW_AddNotReciver(Entity)
Diese Funktion fügt ein Objekt hinzu das keinen Schatten empfängt.

SHW_RemoveNotReciver(Entity)
Diese Funktion löscht ein Objekt das keinen Schatten empfängt, d.h. das Objekt empfängt wieder Schatten.

Hier kann man es herunterladen: Download
Aktuelles Projekt:
Demonspawn
RPG

skey-z

BeitragDi, Mai 02, 2006 8:09
Antworten mit Zitat
Benutzer-Profile anzeigen
hab es gestern mal mit ner einfachen Kugel (erstelt mit B3D) ausprobiert, da scheint es noch zu fehlern zu kommen, teilweise wird der schatten sehr verzerrt.
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter

D2006

Administrator

BeitragDi, Mai 02, 2006 12:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Will ja keine Krümeln kacken oder Haare spalten. Aber im Zeichen der Professionalität folgende Anmerkung:
Es heißt Receiver.
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

lucifer

BeitragDi, Mai 02, 2006 21:08
Antworten mit Zitat
Benutzer-Profile anzeigen
So hab den Fehler mit der Sphere repariert und Reciver in Receiver umbennant.

Hier kann man die neue Version runterladen: Download
Aktuelles Projekt:
Demonspawn
RPG
 

X0r

BeitragFr, Okt 27, 2006 23:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Könntest du das für mich nochmal hochladen bitte?
Danke.

BladeRunner

Moderator

BeitragSa, Okt 28, 2006 12:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Sowas bitte per PM klären. Danke.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

X0r

BeitragSa, Okt 28, 2006 16:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei mir entstehen viele Fehler. Erstmal, wenn ich ein mesh lade, ist der Schatten fehlerhaft.
Dann habe ich das Gefühl, dass der eigene Schatten des meshes auf ihn selber geworfen wird.
Und Animation funktioniert bei mir nicht. Der sagt: "Object does not exist".

Hier mal ein screenshot:
user posted image



Und diese Löcher im Schatten sind echt. Wie kommt das bitte? Im mesh sind keine Lücken.

Mr.Keks

BeitragSo, Okt 29, 2006 3:07
Antworten mit Zitat
Benutzer-Profile anzeigen
http://www.xware.chat-blitz.de...Index.html
versuchs mal damit! da is das self-shadowing (was an sich nen hübscher effekt ist) etwas weicher (=
MrKeks.net

StepTiger

BeitragSo, Okt 29, 2006 11:31
Antworten mit Zitat
Benutzer-Profile anzeigen
bei devils shadow system hatte ich das problem, dass ich, wenn ich im schatten war, alles falsch herum gesehen habe. Also: wo schatten, da kein schatten, wo kein schatten, da schatten.

Normalerweise müsste man prüfen, ob man im shadow volumen ist und dann den vergleichsmodus umstellen. Weiß nicht, ob er das Problem behoben hat.
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

Mr.Keks

BeitragSo, Okt 29, 2006 12:10
Antworten mit Zitat
Benutzer-Profile anzeigen
das war aber eine seeeeeeehr alte version. hol dir doh einfach mal eine neue version, statt deine zeit mit posts zu seit monaten behobenen problemen zu verschwenden Smile
MrKeks.net
 

X0r

BeitragSo, Okt 29, 2006 12:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey hey, das Ding ist schnell. Danke.

Edit:
Zitat:
;Note: the global commands like Render() has already
;been explained in the previous tutorial. No big
;explinations here anymore.

Include "..\Includes\DevilShadowSystem.bb"
Include "..\Includes\ShadowVolumes.bb"
Include "..\Includes\UserInterface.bb"

Graphics3D 1024, 768, 32, 2
SetBuffer BackBuffer()

;Camera
Cam = CreateCamera()
PositionEntity Cam, 0, 4, -8

;Shadows
InitShadows(Cam)

;Light
Light = CreateLight()
PositionEntity Light, 10, 10, 0
PointEntity Light, CreatePivot()
SetShadowLight(Light)

;Floor
c = CreateCube()
ScaleEntity c, 5, 1, 5
EntityColor c, 0, 0, 255
SetShadowMesh(c, False)

;Animated caster
Caster = LoadAnimMesh("..\Media\Mak.3ds")
ScaleEntity Caster, .1, .1, .1
PositionEntity Caster, 2, 1.2, 0

SetShadowMesh(Caster)


Caster1 = LoadAnimMesh("..\Media\Mak.3ds")
ScaleEntity Caster1, .1, .1, .1
PositionEntity Caster1, 2, 1.2, 3

SetShadowMesh(Caster1)



;Note: This shadow system doesn't matter about, whether it is animated or not.
;Just use SetShadowMesh() for animated and not animated objects.
;The other issue is, that b3d animations are not working. Only 3ds/x anims!

;Main loop
While Not KeyHit(1)
Cls
frames=frames+1
time=MilliSecs()

TurnEntity Caster, 0,0.5*time1, 0


If MilliSecs()-oldtime>1000
fps=frames
oldtime=MilliSecs()
frames=0



EndIf



Render(1, 1)
Text 1,1,fps
Flip 0








time1=MilliSecs()-time

Wend
FreeShadows()
End



Kann man hier irgendwie noch mehr speed raußholen?
(Nicht, dass das langsam wäre)

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group