Toon / Comic Shader
Übersicht

![]() |
ToeBBetreff: Toon / Comic Shader |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hab schon viele Bilder und so gesehen, wo mit Toonshadern 3D Modelle wie im comic gemalt aussahen. Da hab ich mir gedacht, könnt ich gut für mein Project gebrauchen. Da hab ich dann gleich die Fragen dafür :
Ich brauche nur so einen der die aussehnlinien des Objects dick malt, also die linien die von der camera aus aussen sind, und die die "innen" sind sollen nur etwas angedeutet sein (schwarz). Wie macht man sowas ? Hat das hier jemand schon gemacht und kann mir das erklären ? Kennt jemand ein gutes auf Blitz bezogenes Tutorial (möglichst in Deutsch) in dem das gut beschreiebn wird ? Oder hat jemand sowas schonmal geschrieben und ist bereit mir diese Function zu geben ![]() mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
Für Outlines kannst du einfach das Modell nehmen und dann umkehren, dann noch schwarz kolorieren und EntityFX auf 1 setzen.
MfG |
||
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Gut habe ich verstanden, wollte es ausprbieren aber es funtz nicht :
Code: [AUSKLAPPEN] Graphics3D 800, 600, 16, 2
SetBuffer BackBuffer( ) Global Camera = CreateCamera( ) CameraClsColor Camera, 100, 100, 100 Global TestObj = CreateCone( ) Global ToonObj = CreateToonOutline( TestObj, 1) PositionEntity TestObj, 0, 0, 5 Repeat TurnEntity TestObj, 1, 1, 1 RenderWorld( ) Flip Until KeyHit( 1 ) End Function CreateToonOutline(ObjMesh, dicke#=1.01, Name$="Obj") Local LocalMesh = CopyEntity( ObjMesh ) EntityParent( LocalMesh, ObjMesh ) FlipMesh( LocalMesh ) ScaleMesh LocalMesh, dicke#, dicke#, dicke# EntityFX LocalMesh, 1 EntityColor LocalMesh, 0, 0, 0 Return LocalMesh End Function Was mache ich falsch ? mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
Gat irgendwas mit "Dicke" zu tun, wenn man es rausnimmt funktioniert es.
d.h. mach beim Funktionsaufruf den 2ten Parameter zu 1.1 MfG |
||
BadDeath |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Mach mal "Local LocalMesh = CopyMesh( ObjMesh )". So gehts nämlich:
Code: [AUSKLAPPEN] Graphics3D 800,600,32,2
SetBuffer BackBuffer( ) Global Camera = CreateCamera() CameraClsColor Camera, 100, 100, 100 Global TestObj = CreateCone( ) EntityColor testobj, 255,0,0 Global ToonObj = CreateToonOutline( TestObj, 1.1) PositionEntity TestObj, 0, 0, 5 Repeat TurnEntity TestObj, 1, 1, 1 RenderWorld() Flip Until KeyHit( 1 ) End Function CreateToonOutline(ObjMesh, dicke#=1.01, Name$="Obj") Local LocalMesh = CopyMesh( ObjMesh ) EntityParent( LocalMesh, ObjMesh ) FlipMesh( LocalMesh ) ScaleMesh LocalMesh, dicke#, dicke#, dicke# EntityFX LocalMesh, 1 EntityColor LocalMesh, 0, 0, 0 Return LocalMesh End Function |
||
-~= real coders just code in binary =~- |
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
BadDeath: liegt an ScaleMesh, sagt man dem "ScaleEntity" funktioniert es.
Merke: Wenn Entitybefehle vor Meshbefehlen angewendet werden, werden letztere nicht mehr funktionieren. MfG |
||
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja cool danke es lag an ScaleMesh ^^
Aber das heißt ich muss für jedes Object was ich habe automatisch ein zweites laden (= doppelter speicherverbrauch). Geht das nicht irgentwie speicherschonender ? mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mit ScaleMesh![]() ![]() So ein vorhabend ist für Leute die nichtmal wissen, wie vom Grundprinzip so etwas aufzubauen ist, ist das ''selbermachen'' nicht grad anzuraten. Daher würde ich mal im Codearchiv danach suchen. Ich denke mich daran zu erinnern, daß da was rumschwirren müßte. Für die Schattierung eines Objektes - also in Farbabstufungen wie man sie von Comics her kennt - sollte man anstelle der Vertiecesbeleuchtung eine Toonshade-Textur mit dem Flag 64 laden und auf das Objekt drauf pappen. Je nachdem wie die Textur aussieht, kann man die ''Beleuchtung'' des Objektes beeinflussen. Die einfachste Texturform ist von links nach rechts in z.B. 5 Grauabstufen (hell nach dunkel) zu erstellen. Da kann man allerdings auch noch viel machen, so zum Beispiel Kugelförmige Schattierungen um mehr Räumlichkeit in ein Objekt unter zu bringen etc... |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
EDIT: -Snip- | ||
![]() |
SYSThern |
![]() Antworten mit Zitat ![]() |
---|---|---|
hi
Code: [AUSKLAPPEN] Function Cel_Shade(Shaded_Entity, OutlineScale#=0.025) Outline_Entity = CopyMesh(Shaded_Entity) UpdateNormals Outline_Entity EntityFX Outline_Entity, 1+8 Surfaces = CountSurfaces(Outline_Entity) For LOOP_Surface = 1 To Surfaces Surface_Handle = GetSurface(Outline_Entity, LOOP_Surface) Verts = CountVertices(Surface_Handle) - 1 For LOOP_Verts = 0 To Verts-1 Vx# = VertexX#(Surface_Handle, LOOP_Verts) Vy# = VertexY#(Surface_Handle, LOOP_Verts) Vz# = VertexZ#(Surface_Handle, LOOP_Verts) VNx# = VertexNX#(Surface_Handle, LOOP_Verts) VNy# = VertexNY#(Surface_Handle, LOOP_Verts) VNz# = VertexNZ#(Surface_Handle, LOOP_Verts) VertexCoords Surface_Handle, LOOP_Verts, Vx#+(VNx#*OutlineScale#), Vy#+(VNy#*OutlineScale#), Vz#+(VNz#*OutlineScale#) Next Next FlipMesh Outline_Entity EntityColor Outline_Entity, 0, 0, 0 PositionEntity Outline_Entity, EntityX#(Shaded_Entity, True), EntityY#(Shaded_Entity, True), EntityZ#(Shaded_Entity, True) EntityParent Outline_Entity, Shaded_Entity End Function aus dem englischem forum... mfG SYSThern |
||
Tools and Programms
-------------------- www.systhern.de |
![]() |
Arrangemonk |
![]() Antworten mit Zitat ![]() |
---|---|---|
ne outlein soll man nicht cel shade nennen, das shading kreigt man nämlich hin, indem man den abgehakten farbverlauf als cubemap oder spheremap drauftut
![]() irgendwie so war das und die richtige outline kreigt man hin, indem man den mesh vertexweise seiner nromalen entlang verschiebt auch "push" genannt und ich würd die funktion push nennen und net cell shade ![]() |
||
ingeneur |
![]() |
SYSThern |
![]() Antworten mit Zitat ![]() |
---|---|---|
ups vergessen zu ändern hab nur die outlines drin gelassen sry nein is von dem projekt...
https://www.blitzforum.de/foru...hlight=cel da ist das shading aber sehr weich wenn man ne größere textur nimmt dann wirds härter und sieht besser aus ![]() mfG SYSThern |
||
Tools and Programms
-------------------- www.systhern.de |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group