Wieder mal: MS3D --> BB3D ... Alpha? Emissive?
Übersicht

![]() |
AymanBetreff: Wieder mal: MS3D --> BB3D ... Alpha? Emissive? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo zusammen,
eine Tüte voller Fragen hab ich heute, für die ich leider wieder etwas ausholen muss ... Vorab Ich habe folgendes simples Raumschiffchen mit Milkshape (ms3d) erstellt: ![]() Ja, ich weiß, hübsch häßlich ![]() Es besteht aus vier Mesh-Groups, die nach dem Laden in Blitz3D (bb3d) zu vier Surfaces einer Entity werden. 1. Group: Schiffshülle - die rote Textur 2. Group: Das Fenster zur Pilotenkanzel - keine Textur, nur Farbe - soll in bb3d wie in ms3d mit Alpha 0.5 transparent sein. 3. Group: Das leuchtend weiße Feld hinten am Triebwerk, soll mit EntityFX oder wegen mir auch BrushFX ..., 1 leuchten 4. Group: EngineRay, also der wiederum halbtransparente blaue Gasausstoß des Triebwerks, soll auch leuchten. Zusätzlich habe ich noch einen in vier Segmente geteilten Schutzschild für das Schiff, den ich separat lade - zunächst nur einen, der dann mit CopyEntity/RotateEntity vervielfältigt und positioniert wird. Den sieht man auf dem Bild nicht. Die Teilung erfolgt, damit die Kollisionsabrage später einfacher wird. Übrigens Nein, ich habe nicht die Kohle mit 3DS-Max anzuschaffen, um dann von der wunderbaren b3d-pipeline zu profitieren. Problem 1: Ich bekomme die Modelle nicht gescheit texturiert. Nach dem Laden des oben beschriebenen Modells (egal, ob als *.b3d oder *.3ds exportiert) habe ich keine Transparanz (Alpha-Wert) mehr bei Surface 2 und 4. Auch das Leuchten geht verloren. Ich habe versucht, die Surfaces nach dem Laden mit neuen hangemachten Brushes (aus den Texturen) zu bepinseln, die dann mit "BrushFX b, 1" leuchten bzw. BrushAlpha transparent gemacht werden, aber das funzt gar nicht. Nach dem Laden waren die Modelle stets immun gegen meine Pinselangriffe ![]() Gelöst habe ich das Problem jetzt erst mal so, dass ich die vier MeshGroups einzeln aus MS3D exportiere und einzeln in BB3d lade. Mit EntityFX / EntityAlpha kann ich DANN die Effekte richtig setzten. Anschließend setze ich sie über ein gemeinsames Parent-Pivot wieder zusammen (bleiben natürlich 4 einzelne Entities). Doch dann kommt mein Problem Nr. 2 zum Tragen ... 2. Problem: Slide-Kollisionen, verschieben meine einzelnen Enity-Childs vom Parent-Pivot Nach einer Kollision mit einem bösen Sternenzerstörer hängt mein Schultzshild plötzlich hoch über dem Schiffchen (und schützt da oben natürlich herzlich wenig). Selbiges gilt für die anderen Teile des Schiffes. Fragen Kann ich mit Milkshape3D erstellt Modelle so nach Blitz3D exportieren, dass Transparenz (Alpha) und Leuchteffekte (Emissiv) von Texturen erhalten bleiben? Wenn nicht, wie kann ich das sonst erreichen? Blöd ist auch, dass ich die Surfaces in BB3d scheinbar nicht von ihren Brushes/Texturen lösen kann, um ihnen dann neue Texturen/Brushes zu verpassen. Kann man dieses Verschieben irgendwie verhindern? Ich schätze wohl am geschicktesten in dem man das Schiff gleich als EIN Mesh läd, wie? ![]() Vielen Dank im Voraus Ayman |
||
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
http://mitglied.lycos.de/theve...kshape.rar
Unterstützt: - Shininess - Diffuselighting - Alphamaps - Alphatexture - Spheremapping Hier mal ein Ausschnitt, was der B3D Exporter an Eigenschaften speichert: Code: [AUSKLAPPEN] for( k=0;k<model->nNumMaterials;++k ){
msMaterial *m=model->pMaterials+k; string t=m->szDiffuseTexture; if( !t.size() ) continue; if( tex_map.find( t )!=tex_map.end() ) continue; //write out the texture info writeString( t ); //file writeInt( 1 ); //flags (rgb) writeInt( 2 ); //blend (multiply) writeFloatArray( pos0,2 ); //position writeFloatArray( scl1,2 ); //scale writeFloat( 0 ); //rotation tex_map.insert( make_pair( t,n_texs ) ); ++n_texs; } endChunk(); //write BRUS chunk... beginChunk( 'BRUS' ); writeInt( 1 ); //one tex per brush for( k=0;k<model->nNumMaterials;++k ){ msMaterial *m=model->pMaterials+k; writeString( m->szName ); //name writeFloatArray( m->Diffuse,4 ); //color writeFloat( 0 ); //shininess writeInt( 1 );writeInt( 0 ); //blend/FX string t=m->szDiffuseTexture; if( t.size() ) writeInt( tex_map.find( t )->second ); else writeInt( -1 ); } endChunk(); Bis auf Diffusecolor wird also nix weiter unterstützt(obwohl es einfach wäre, es zu realisieren aber egal) mfg olli |
||
vertex.dreamfall.at | GitHub |
![]() |
Ayman |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Vertex: Super Aktion - vielen Dank
... leider tut er's nicht mit meinem Modell. Hab verschiedene Modelle ausprobiert und bekam verschiedene Fehler: Bei Modell #1 liefert Renderworld eine Memory Access Violation (bei eingeschaltetem Debuger!). Bei Modell #2 bleibt die Laderoutine in einemRuntime Error stecken: "Offset out of range." Ort des Steckenbleibens: Code: [AUSKLAPPEN] Function ms3dCreateTriangles(BnkTriangles,BnkGroup)
Local TriangleCount,I,GI,V0,V1,V2,Surface TriangleCount = PeekShort(BnkTriangles,0) For I = 1 To TriangleCount GI = PeekByte(BnkTriangles,(I - 1) * 67 + 68) V0 = PeekShort(BnkTriangles,(I - 1) * 67 + 02) V1 = PeekShort(BnkTriangles,(I - 1) * 67 + 04) V2 = PeekShort(BnkTriangles,(I - 1) * 67 + 06) Surface = PeekInt(BnkGroup,GI * 4) ; <--- hier bleibt er hängen AddTriangle Surface,V0,V1,V2 Next End Function Vielleicht hat sich das Dateiformat von ms3d ja inzwischen geändert? Ich verwende ms3d 1.7.0. Ich werde den Code mal aufmerksam studieren. Vielleicht kann ich das Problem ja beheben. Grüße Ayman |
||
Darren |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hm und wenn du bei der collision einfach danach wieder alles zusammen setzt? | ||
MFG Darren |
![]() |
Ayman |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: hm und wenn du bei der collision einfach danach wieder alles zusammen setzt?
mach ich ja, aber ideal ist das irgendwie auch nicht. Vor allem bleibt meine Frage, wie ich ein Modell aus Milkshape gescheit importiere, nach wie vor unbeantwortet. Es muss doch einen Weg geben, Transparenz und Leuchteffekte irgendwie (egal woher) nach Blitz3D importieren zu können, ohne mir 3DS-Max anschaffen zu müssen und somit diese b3d-pipeline nutzen zu können. Immerhin, ich überarbeite gerade Vertexens Importer mit Hilfe der aktuellen Milkshape SDK. Damit hoffe ich weiterzukommen. |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
einen ms3d loader schreiben wäre die einfachste variante, dann kannst du auf surface basis die brushes entsprechend setzen. alternativ wäre da die möglichkeit eines neuen exporters ( oder den macher des originalen B3D exporters zu kontaktieren in der hoffnung die sources zu erhalten ) | ||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
Schicke mir mal das Model. Habe mal die 1.7 SDK heruntergeladen, und die Specs mit meinem Importer verglichen und habe nix festellen können, was anders gemacht wurde.
Ich würde ja den Exporter noch ein bischen überarbeiten, ist ja nicht viel, jedoch kann ich mit DevC++ keine MilkshapeDLLs erstellen(ist ein altes Problem, weil er irgendwie eine Exportdatei nicht verarbeiten kann). Der Entwickler des Exporters ist übrigens Mark Sibly, glaube kaum das der Zeit hat für solche Sachen ![]() mfg olli |
||
vertex.dreamfall.at | GitHub |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group