| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| [+] Registriert seit: Dec 2002 Ort: cologne
Beiträge: 2.271
| [STUFF] Perspective Texture Mapping
AS3 ist eigentlich auch schnell genug, um einen Software Renderer zu programmieren. Die Grenze setzt eigentlich nur die Geschwindigkeit von BitmapData.setPixel und BitmapData.getPixel, die das ganze erheblich verlangsamen. Ich habe eine Testszene mit Clipping und allem Drum und Dran mit über 1200 Polygonen. Die Translation und Projektion kostet mal locker gesagt nichts. Nur das Setzen der Pixel ist teuer. Vielleicht kann man die Routine noch beschleunigen, aber um das Auslesen und Setzen der Pixelwerte kommt man nicht drumherum. Ich habe hier das Wichtigste extrahiert, damit man den Code besser nachvollziehen kann. Eine Camera, sowie das Clipping werden hier nur angedeutet, sind also nicht wirklich implementiert. Im Prinzip habe ich nur einen C-Code von Mikael Kalms konvertiert. Als Bonus konnte ich mit ein paar Zeilen einen Z-Buffer integrieren. In einem weiteren BitmapData setze ich die Z-Werte zu jedem Pixel parallel, um beim nächsten Pixel nachschauen zu können, ob der Pixel vor oder hinter dem aktuellen Screenpixel liegt. Dadurch kann man das Z-Sorting sparen. Polygone, die sich schneiden werden also trotzdem richtig dargestellt (wie im Beispiel). Screenshot: 4 sich schneidene texturierte Dreiecke ![]() Zum Selberkompilieren: Code: -default-size 256 256 -default-frame-rate 50 -optimize |
| | |
| | #2 (permalink) |
| [+] Registriert seit: Dec 2002 Ort: cologne
Beiträge: 2.271
|
Man sieht bei einem Schachbrett sehr schön, wie die einzelnen Zeilen gerendert werden. Um das aber zu vermeiden kann man sogenanntes MidMapping einsetzen. Code: var original: BitmapData = BitmapData( new Texture().bitmapData ); var texture: BitmapData = new BitmapData( 512, 512, false, false ); texture.draw( original, new Matrix( 4, 0, 0, 4, 0, 0 ) ); texture.applyFilter( texture, texture.rectangle, ORIGIN, new BlurFilter() ); Geändert von André Michelle (14-02-2006 um 09:26 Uhr) |
| | |
| | #3 (permalink) |
| Trace it Baby Registriert seit: Dec 2001
Beiträge: 416
|
Hey, das Ding ist fein! Auch wenn ich gestehen muss das ich wenig Ahnung vom Rendern habe. Aber nette arbeit die Du da Online stelltst!
__________________ ------------------------------------------------ >>Es gibt zwei Dinge auf dieser Welt, die unendlich sind: Das Universum und die menschliche Dummheit. Aber beim Universum bin ich mir nicht sicher...<<<Albert Einstein>>> Afugrnud enier Sduite ist es eagl, in wlehcer Rienhnelfoge die Bcuhtsbaen in eniem Wrot sethen, das wcihitge dbaei ist, dsas der estre und lzete Bcuhtsbae am rcihgiten Paltz snid. Wiel wir nchit Bcuhtsbae für Bcuhtsbae enizlen lseen, snodren Wröetr als Gnaezs. |
| | |
| | #4 (permalink) |
| [+] Registriert seit: Dec 2002 Ort: cologne
Beiträge: 2.271
|
Man kann sogar Video auf die Textur packen :) http://blog.andre-michelle.com/upload/as3/ptm.video (Blixa Bargeld) |
| | |
| | #5 (permalink) |
| \x3a\x6f\x29 Registriert seit: Apr 2004 Ort: paris
Beiträge: 806
|
Was benutzt du zum clippen? Ich kann mir vorstellen das reine 3DS ganz schön schwer sind, oder? Benutzt du in der Max-Scene da auch z-sorting? Weil ich stehe vor einer Wand, die vor dem dicken Raum mit den Säulen ist und habe noch 350 Polygone. Aber es ist einfach krass, was jetzt möglich ist |
| | |
| | #6 (permalink) | |
| [+] Registriert seit: Dec 2002 Ort: cologne
Beiträge: 2.271
| Zitat:
| |
| | |
| | #7 (permalink) |
| \x3a\x6f\x29 Registriert seit: Apr 2004 Ort: paris
Beiträge: 806
|
Da du keine dynamischen Lichter hast, könntest du sogar nur das rendern, was man wirklich sieht. Bei Spieleengines gibt es da so verschiedene Ansätze. Du arbeitest ja mit Max, vielleicht könnte man dafür einen schönen Exporter schreiben, der im Mapformat speichert, von welchem Raum aus man welche Räume überhaupt sehen kann. Dazu noch Frustum Culling und man hat ohne Optimierung (mit heutigen Rechnern) schon sehr hohe FPS. (ist zumindest mit OpenGL so) Die meißten modernen spiele haben/hatten Probleme damit, wieviel gerendert wird. Angenommen du stehst in Raum A, welcher mit Raum B in Verbindung steht. Dann könntest du theoretisch in Raum B hinein gucken, auch wenn du nur einen Spalt von dem siehst, wenn du z.B. in einem scharfen Winkel zur Tür stehst. Dann wird, vorallem wegen dynamischen Lichtquellen (etc. die neuen Späße kenn ich nicht) meißt der ganze Raum gerendert. Also wenn es statisch ist, müsste ja über Frustum und Sektoren schon viel möglich sein. Ich bin gespannt ![]() EDIT: Was mir grade noch einfällt: Octree. Google mal Geändert von [je] (17-02-2006 um 10:50 Uhr) |
| | |
| | #8 (permalink) |
| [+] Registriert seit: Dec 2002 Ort: cologne
Beiträge: 2.271
|
Frustum Clipping ist schon drin. Das macht auch extrem viel aus. Aber wenn ich in den Raum schaue, dann sind da nunmal viele Polygone. Man kann auch pretesten, ob Polygone völlig hinter anderen Polygone versteckt sind. Eben mit Octatree oder BinaryTrees, etc. Wenn du dann vor der beschriebenen Wand stehst, sieht du auch nur die 2,3 Polygone. Ja, das ist ein endloses Feld, aber in AS3 macht es Sinn, diese ganzen Pretests einzubauen, weil das Rechnen wirklich schnell genug ist. Der ZBuffer wäre auf Dauer alleine zu langsam. Ein Plugin mit MAXScript schenke ich mir. MAXScript ist furchtbar. Ich könnte mir vorstellen, dass man bei geschickter Benennung der Objekte alle diese Features einbauen kann. Die Namen stehen auch im 3ds File. |
| | |
| | #10 (permalink) | |
| [+] Registriert seit: Dec 2002 Ort: cologne
Beiträge: 2.271
| Zitat:
![]() Aber wenn der Aufwand zu hoch ist, dann lasse ich es lieber. MAXScript ist die Scriptsprache von 3dmax und die ist der Grusel schlechthin. Richtige Plugins lassen sich bestimmt auch in C programmieren, aber ich bin mir auch sicher, dass es gute Leveldesign-Plugins bereits gibt, deren Output man in AS3 auch parsen kann. Ich habe mal gehört, dass 3dmax von Spieleentwicklern gerne benutzt wird, während zB. Maja wirklich für Animationen im Filmbereich eingesetzt wird. Ich frage mal die Jungs in meinem GameDeveloper Kurs nächste Woche. Die arbeiten mit 3dmax und der Unrealengine. | |
| | |
| | #11 (permalink) |
| www.kruesch.de Registriert seit: Feb 2002
Beiträge: 1.057
|
Sehr schön das ![]() Ich habe für meine 3D Sachen immer Cinema4D benutzt. Ich finde das für solche Zwecke wesentlich besser als 3D MAX. Es gibt da eine nette Scripting Sprache und man kann Objekte in einer hierarchischen Struktur verwalten und mit eigenen Datentags versehen. Mit AS3 lässt sich sicherlich eine ziemlich gute 3D Engine bauen. Ich hatte da vor einem Jahr mal ein bischen experimentiert und war ziemlich überrascht von der Performance. Gruss, Florian
__________________ www.planet-xaml.net |
| | |
| | #12 (permalink) | |
| [+] Registriert seit: Dec 2002 Ort: cologne
Beiträge: 2.271
| Zitat:
Ich könnte mir vorstellen, dass ich anhand der Namensgebung der Objekte die Portals definieren kann. Jeder Raum, Portal wäre dann ein eigenes Objekt, was ich im 3ds File mit Namen wiederfinden kann und entsprechend in die Datenstruktur einbette. | |
| | |
| | #13 (permalink) |
| Knopfmaler Registriert seit: Nov 2004 Ort: Essen
Beiträge: 227
| Blender lässt sich ganz prima mit Python anscripten. Wäre vielleicht eine Alternative für denjenigen der a.) sich ein wenig mit dem etwas exotischen Interface von Blender beschäftigt b.) sich an die formatierten Codeblöcke in Python gewöhnt ![]() OK... ohne Flax.. Blender entwickelt sich rasant weiter, kann eine Menge ist scriptfähig und Open-Source. Was will man mehr. Viele Gruesse =:] Aerks |
| | |
| | #14 (permalink) |
| www.kruesch.de Registriert seit: Feb 2002
Beiträge: 1.057
|
Stimmt. Ich hatte damals für mx3d.com auch anfangs mit Blender gearbeitet. Allerdings gabs damals (2003) noch keine Möglichkeit, an Splines ranzukommen. Bei C4D hat mich aber auch der Objekt-Explorer überzeugt, mit dem man ganz wunderbar eine SceneGraph modellieren kann. Gruss Florian
__________________ www.planet-xaml.net |
| | |
| | #15 (permalink) |
| Knopfmaler Registriert seit: Nov 2004 Ort: Essen
Beiträge: 227
|
@flory Die fehlende Visualisierung vom Scene-Graphen hat mich u.a. auch immer von Blender abgehalten. Hat sich allerdings vor einiger Zeit erledigt. http://www.blender.org/cms/Outliner.437.0.html Der C4D-Outliner ist zwar immer noch um Klassen besser, aber es ist schonmal ein Anfang. Es lohnt sich wirklich die ganzen ReleaseInfos zu überfliegen, weil man hier den besten Überblick bekommt, was Blender kann und was nicht. Ich war echt überrascht, was sich alles getan hat. Die Entwickler dort coden echt was das Zeug hält. Viele Gruesse =:] Aerks |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |