| |||||||
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) |
| habs vergessen Registriert seit: Feb 2006
Beiträge: 990
| [stuff] filtered cubic 3D
tach zusammen, und weil es so ´n spaß macht... hier ein kleiner 3D Würfel, gescriptet, mit so ein paar Filtern versetzt ![]() ansehen Hier noch eine Variation - das ganze flirrt ein wenig mehr: ansehen Und hier mal was zum nachvollziehen und rumspielen: Code:
/////////////////////////////////////////////////////
// flat cubic burner
// author : frank reitberger
// site : http://www.dasprinzip.com
// copyright 2006
/////////////////////////////////////////////////////
// --------------------------------------------------------------------------------------------------
stop();
// --------------------------------------------------------------------------------------------------
///////////////////////////////////
// import flash filter classes
///////////////////////////////////
import flash.display.BitmapData;
import flash.filters.*;
import flash.geom.*;
// --------------------------------------------------------------------------------------------------
///////////////////////////////////
// setup firecracker global vars
///////////////////////////////////
var p:Object = new Object();
p.points = [
{ x: -100, y: -100, z: -100 },
{ x: +100, y: -100, z: -100 },
{ x: +100, y: -100, z: +100 },
{ x: -100, y: -100, z: +100 },
{ x: -100, y: +100, z: -100 },
{ x: +100, y: +100, z: -100 },
{ x: +100, y: +100, z: +100 },
{ x: -100, y: +100, z: +100 }];
var angle_x:Number = 0.01;
var angle_y:Number = 0.0075;
var angle_z:Number = 0.005;
var bindings:Array = new Array([0,1,0,1],[1,2,1,2],[2,3,2,3],[3,0,3,0],[4,5,4,0],[5,6,5,1],[6,7,6,2],[7,4,7,3]);
// --------------------------------------------------------------------------------------------------
///////////////////////////////////
// configure canvas
///////////////////////////////////
function initStage() {
_root.efxStage = new BitmapData(Stage.width, Stage.height, true, 0x00FFFFFF);
_root.createEmptyMovieClip("efxClip", _root.getNextHighestDepth());
_root["efxClip"].attachBitmap(_root.efxStage, _root.getNextHighestDepth());
for ( var i:Number = 0; i<9 ;i++ ) {
_root.createEmptyMovieClip("dot"+i,_root.getNextHighestDepth());
}
paint();
}
// --------------------------------------------------------------------------------------------------
///////////////////////////////////
// paint flat cubic burner
///////////////////////////////////
function paint() {
_root.onEnterFrame = function() {
_root.efxStage.colorTransform(_root.efxStage.rectangle, new ColorTransform(1, 1, 1, 1, 1, -1, -1,-4));
_root.efxStage.applyFilter(_root.efxStage, _root.efxStage.rectangle, new Point(0, 0), new BlurFilter(2, 2, 2));
for (i=0; i<8; i++) {
_root["dot"+i]._x = p.points[i].x+200;
_root["dot"+i]._y = p.points[i].y+200;
_root["dot"+i].lineStyle(1, 0xffffff, 100);
_root["dot"+i].moveTo(p.points[bindings[i][0]].x+200,p.points[bindings[i][0]].y+200);
_root["dot"+i].lineTo(p.points[bindings[i][1]].x+200,p.points[bindings[i][1]].y+200);
_root["dot"+i].moveTo(p.points[bindings[i][2]].x+200,p.points[bindings[i][2]].y+200);
_root["dot"+i].lineTo(p.points[bindings[i][3]].x+200,p.points[bindings[i][3]].y+200);
_root.efxStage.draw(_root["dot"+i]);
_root["dot"+i].clear();
}
for ( var i:Number = 0; i<8 ;i++ ) {
var px:Number = p.points[i].x;
var py:Number = p.points[i].y;
var pz:Number = p.points[i].z;
// Rotation um x-Achse
p.points[i].y = py*Math.cos(angle_x)-pz*Math.sin(angle_x);
p.points[i].z = py*Math.sin(angle_x)+pz*Math.cos(angle_x);
py = p.points[i].y;
pz = p.points[i].z;
// Rotation um y-Achse
p.points[i].x = px*Math.cos(angle_y)+pz*Math.sin(angle_y);
p.points[i].z =-px*Math.sin(angle_y)+pz*Math.cos(angle_y);
px = p.points[i].x;
// Rotation um z-Achse
p.points[i].x = px*Math.cos(angle_z)-py*Math.sin(angle_z);
p.points[i].y = py*Math.cos(angle_z)+px*Math.sin(angle_z);
}
paint();
}
}
// --------------------------------------------------------------------------------------------------
///////////////////////////////////
// init
///////////////////////////////////
initStage(); pwd |
| | |
| | #2 (permalink) |
| muh Registriert seit: Apr 2002 Ort: Freiburg / Stuttgart
Beiträge: 4.338
|
Sieht sehr schick aus, allerdings röchelt meine CPU gaanz böse, schätze mal 10 FPS, da kann man es nicht genießen.
__________________ »Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!) |
| | |
| | #5 (permalink) |
| muh Registriert seit: Apr 2002 Ort: Freiburg / Stuttgart
Beiträge: 4.338
|
Hmm, in der IDE läufts relative angenehm, der Blurfilter halbiert aber die Performance in etwa. Die Verschachtelung von paint und onEnterFrame ist lustig, aber einfacher hättest du es mit PHP-Code:
__________________ »Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!) |
| | |
| | #7 (permalink) |
| Knopfmaler Registriert seit: Nov 2004 Ort: Essen
Beiträge: 227
|
Ganz lustig. Ein paar Sachen sind mir aber aufgefallen: Neben der schon angesprochenen paint-Geschichte: Code: _root.efxStage = new BitmapData(Stage.width, Stage.height, true,0x00FFFFFF); --------------------------------------------------------------^ Transparenz ist bei diesem Beispiel sinnlos, braucht du ja eh nicht (weil Hintergrund komplett schwarz) und es geht dann auch (vermutlich) etwas schneller. Also lieber auf false setzen und den Hintergrund schwarz machen. Code: _root.efxStage.applyFilter(_root.efxStage, _root.efxStage.rectangle, new Point(0, 0), new BlurFilter(2, 2, 2)); -----------------------------------------------------------------------------------------------------------^ Eine Kleinigkeit: In jedem Frame erzeugst du eine neue Blur-Filer-Instanz und einen neuen "Point" Muss ja nicht sein. Eins reicht ja. Dasselbe für ColorTransform. Was ich nicht verstehe: Wieso wird für jede Fläche (bzw. 2 Linien) ein einzelner MovieClip benötigt? Hat das einen Grund? Man kann doch alles in einen Clip reinmalen und danach den ganzen Kram mit .draw in die Bitmap malen. Geht so vielleicht auch einen Tick fixer. Wirkt in dieser Form fast wie ein Flash4 Überbleibsel. ![]() Viele Gruesse =:] Aerks |
| | |
| | #8 (permalink) |
| liebt Skorpionin Registriert seit: Apr 2003
Beiträge: 1.258
|
@Aerks: da wollte uns doch der gütige pwdVergesser nur eine kleine Freude machen und du schiesst ihm eine volle Breitseite rein... aua. Aber deine Argumente sind stichhaltig. Noch mehr aua. ![]() @pwdVergesser: bin mir zwar über Sinn und Unsinn deines Scripts nicht ganz im klaren, aber das Ergebnis sieht interessant aus. Finde solche Experimente spannend. Danke für die Anregung. |
| | |
| | #9 (permalink) | ||||
| habs vergessen Registriert seit: Feb 2006
Beiträge: 990
|
@Aerks Zitat:
![]() Zitat:
Zitat:
Zum ansehen... Sicherlich kann man das auch alles in einem Clip malen usw. ... man kann auch drüber streiten ob man _root verwenden sollte (sollte man nicht) ... aber das mache ich dann wenn ich nicht "mal eben" was zum gucken poste... ![]() @skorpion Zitat:
![]() pwd | ||||
| | |
| | #10 (permalink) |
| will code HTML for food Registriert seit: Mar 2003
Beiträge: 1.232
|
Ruckelt bei mir im Browser leider auch enorm. Sowohl im Firefox als auch im IE mit dem neuesten Player. Habe mir dann die SWF mal runtergeladen und von lokal getestet. Da läuft es dann super flüssig ![]() Bis dann, -querkopf-
__________________ Alles ist wie immer. Nur schlimmer. |
| | |
| | #11 (permalink) |
| \x3a\x6f\x29 Registriert seit: Apr 2004 Ort: paris
Beiträge: 806
|
Eine flüssigere Variante: http://je2050.de/showroom.php?file=fadecube -- Auch lustig: Icecube Dazu ein wenig den Code verändert, also lokale Variablen benutzt und die Technik auch geändert was die ganzen MovieClips da usw. angeht. PHP-Code: Geändert von [je] (07-09-2006 um 13:07 Uhr) |
| | |
| | #12 (permalink) |
| habs vergessen Registriert seit: Feb 2006
Beiträge: 990
|
auch cool - der farbige blur gefällt mir auch sehr gut. aber auch hier verlangsamt sich die drehung des cubes nach ca. eineinhalb "selbstumdrehungen" um 50%... Und der Icecube ist bei mir performance-technisch widerum leider ein killer... ![]() pwd Geändert von pwdVergesser (07-09-2006 um 13:58 Uhr) |
| | |
| | #13 (permalink) |
| experience++; Registriert seit: Jul 2002 Ort: Düsseldorf
Beiträge: 11.366
|
@pwd: du weißt ja das es auf meinem rechner mal so gar nicht läuft. im firefox macht es kaum sinn.. naja. aber weiß ja von deinem rechner noch wie es ausehen soll ![]() @je: wow, der totale performance schuub. deine variante kann ich mir fast problemlos sogar im ff anschauen! begeistert bin ![]() grüße, sal
__________________ Bitte keine Flashfragen an mich schicken. Dafür ist ja das Forum da! Das betrifft auch Profilnachrichten. |
| | |
| | #15 (permalink) | |
| experience++; Registriert seit: Jul 2002 Ort: Düsseldorf
Beiträge: 11.366
| Zitat:
![]() cya, sal
__________________ Bitte keine Flashfragen an mich schicken. Dafür ist ja das Forum da! Das betrifft auch Profilnachrichten. | |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |