Fragen zum B3D Dateiformat
Übersicht

Kernel32Betreff: Fragen zum B3D Dateiformat |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Bin gerade dabei, eine Funktion zu basteln, womit ich meine Meshes als B3D speichern kann. Aber beim Durchgehen der Spezifikation bleiben leider noch ein paar Fragen offen, weil die Beschreibung leider ziemlich dürftig ist.
1. Sowohl im MESH-Chunk, als auch im TRIS-Chunk wird eine Brush-id angegeben. Wo ist der Unterschied? 2. Angenommen, ich exportiere drei Brushes am Anfang des Files, hat dann der erste den Index 0, der zweite 1 und der dritte 2 usw., also in der Reihenfolge, wie man sie in die Datei schreibt? 3. Wie verknüpfe ich ein Mesh im File dann mit einem der angegebenen Brushes? Wahrscheinlich, in dem ich die Brush ID (siehe 2.) angebe -aber im MESH-Chunk, im TRIS-Chunk oder in beiden? |
||
-------------
Wollte neulich Herrn Brot anrufen, aber da war belegt. Dann hab ich bei Wheight Watcher's angerufen, aber niemand hat abgenommen. Schliesslich hab ich im Irak angerufen, aber dort war besetzt o.O |
![]() |
biggicekey |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich habe davon leider nicht so viel ahnung aber vllt hilft dir die datei die ich gerade ins archiv hochgeladen habe
b3dfile_utils.zip vllt nimmt sie dir aber auch schon dein ergebniss voraus. hoffe das hilft dir gruß |
||
#45 www.icekeyunlimited.de www.starcrusade.de
Gewinner BCC#17 !!! mit dotkiller Nothing more to register - you've cleaned us out![/size] |
antome!!! gesperrt !!! |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
zu 1.
Ich probiere solche Sachen immer aus, ich nehme an, nehme aber nur an, die Brush ID beim Mesh Chunk (es steht da MasterBrush) wird dann eingesetzt wenn ein TRIS Chunk keine Brush ID zugewiesen bekommen hat. Bei 2. ja soweit ich mich erinnere. Aber was meinst du mit exportieren ? Bei 3. ja zuweisen 0 ist der erste Brush und so weiter. |
||
antome |
Kernel32 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke euch, funktioniert soweit -ich habe einach im jeweiligen MESH-Chunk und im TRIS-Chunk die Brush-id angegeben. Geht anscheinend.
Allerdings: wenn ich jetzt Meshes mit mehreren Texturen (Multitextur) habe (z.B. eine Textur im Layer 0, eine andere im Layer 3), wie kann ich das dann im Dateiformat angeben ![]() |
||
-------------
Wollte neulich Herrn Brot anrufen, aber da war belegt. Dann hab ich bei Wheight Watcher's angerufen, aber niemand hat abgenommen. Schliesslich hab ich im Irak angerufen, aber dort war besetzt o.O |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Zitat: BRUS int n_texs { char name[] ;eg "WATER" - just use texture name by default float red,green,blue,alpha ;Blitz3D Brushcolor and Brushalpha: default=1,1,1,1 float shininess ;Blitz3D BrushShininess: default=0 int blend,fx ;Blitz3D Brushblend and BrushFX: default=1,0 int texture_id[n_texs] ;textures used in brush } Der letzte Eintrag kommt da zum tragen |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Kernel32 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das ist schon klar, aber wie gibt man dort den Texturlayer an? | ||
-------------
Wollte neulich Herrn Brot anrufen, aber da war belegt. Dann hab ich bei Wheight Watcher's angerufen, aber niemand hat abgenommen. Schliesslich hab ich im Irak angerufen, aber dort war besetzt o.O |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
garnicht
Das ist ein Array 0 - Irgend eine Textur 1 - 0 2 - 0 3 - Irgend eine andere Textur wenn du Layer 0 und 3 nutzt. Oben wäre dann natürlich vor dem bruch n_texs = 4 |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Kernel32 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Aber dann wohl nicht 0 für "keine Textur", sondern eher -1, da 0 ja für den ersten Texturindex steht.
Und in welcher Form muss hier ein Array angegeben werden? C++-mässig null-terminiert, wie bei den Strings? Oder einfach als Ints in Folge? |
||
-------------
Wollte neulich Herrn Brot anrufen, aber da war belegt. Dann hab ich bei Wheight Watcher's angerufen, aber niemand hat abgenommen. Schliesslich hab ich im Irak angerufen, aber dort war besetzt o.O |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
C mässig, also int int int int
Ob 0 oder -1 weiss ich jetzt grad nicht, das kommt draufan ob er die Indizes bei 0 beginnt zu lesen oder bei 1. Das lässt sich dann mit einem simplen Laden testen ![]() (0 terminiert ist garkein Array, das gilt nur bei Strings die es in C++ standardmässig so aber auch nicht gibt sondern über string.h eingebunden werden und ansonsten einfach eine Konvention sind) |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
BIG BUG |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wichtig ist noch, dass n_texs dann natürlich die Anzahl der Texturen enthalten muss. Also hier z.B. '2'. Am Schluss wird dann halt 2 mal ein Int mit der gewünschten Textur eingefügt.
Zwischendrin irgendwelche Texturen leer zu lassen bringt wahrscheinlich eh nix... |
||
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final) |
Kernel32 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
BIG BUG hat Folgendes geschrieben: Also hier z.B. '2'. Am Schluss wird dann halt 2 mal ein Int mit der gewünschten Textur eingefügt.
Zwischendrin irgendwelche Texturen leer zu lassen bringt wahrscheinlich eh nix... Aber wie sollte man dann den angeben können, in welchen Layer eine Textur kommt, wenn man nur die tatsächlich benutzen Texturen angibt, ohne "leere"? Andererseits: wenn man "leere Layers" angeben müsste, müsste man ja auch nicht n_texs angeben, da das Format dann sowieso 7 Ints erwartet (alle Layer). Ey, jetzt bin ich total verwirrt ![]() |
||
-------------
Wollte neulich Herrn Brot anrufen, aber da war belegt. Dann hab ich bei Wheight Watcher's angerufen, aber niemand hat abgenommen. Schliesslich hab ich im Irak angerufen, aber dort war besetzt o.O |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Du musst leere Layer angeben, da es explizit einen Array der Länge n_texs erwartet. (das max wär übrigens 8 also 0 - 7)
Wenn du nicht "auffüllen" willst von unten (also 0, dann 1, dann 2 etc verwenden), aus welchem Grund auch immer, dann musst du mit leeren Layern auffüllen und entsprechend n_texs vergrössern. Machst du das nicht, so wird er beim auslesen über die BRUS grenze raus auslesen und den nächsten BRUS trashen. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Kernel32 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ne, funktioniert nicht. Habe es mit der Angabe der Texturanzahl versucht und ohne (leere Layer dazwischen mit -1 gefüllt). Gile[s] crasht beim Importieren des Meshes.
Das ist wohl auch der Grund, warum es bis heute keinen B3D-Export-Code gibt, der multiple Texture Layers unterstützt. Auf dieses Problem sind wohl alle anderen auch gestossen ![]() |
||
antome!!! gesperrt !!! |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Du kannst mal versuchen einen Farbbrush zu erstellen und den dafür einzutragen, wenn er nicht gebraucht wird sieht man die Farbe ja nicht, ich glaube Blitz3D nimmt dafür weiß.
Edit: Farbtextur meine ich oder setz einfach eine andere vorhandene ein. |
||
antome |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Kernel32 hat Folgendes geschrieben: Das ist wohl auch der Grund, warum es bis heute keinen B3D-Export-Code gibt, der multiple Texture Layers unterstützt. Auf dieses Problem sind wohl alle anderen auch gestossen
![]() Das ist defakto falsch, solltest du wohl auch wissen, denn sonst würde Gile[s] nicht funktionieren. Kannst ja Mal deinen Code posten, dann können wir darauf basierend versuchen den Fehler zu finden. Alternativ kannst du dir einen B3D Parser schreiben, der dir den Output von Gile[s] oder Ultimate Unwrap 3D lädt und als PlainText ausspuckt mit einrücken etc. Dann siehst du wie es aufgebaut sein könnte / müsste. Was mir allerdings eben beim nochmaligen Anschauen des Formates aufgefallen ist, ist das das B3D Format eigentlich 8 UV Sets unterstützt, B3D befehlstechnisch aber nur 2? Das ist eine durchaus interessante Erkenntnis ![]() |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
lettorTrepuS |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger. | ||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Dachte ich auch
Aber es steht da explizit das bis zu 8 UV möglich sind. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
antome!!! gesperrt !!! |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
XWorld / G.L.E.T. speichert bis zu 4 Texturen im B3D Format ab, also sind mehr wie 2 möglich. | ||
antome |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Texturen <> UV Sets
Du kannst schon seit jeher bis zu 8 Texturen haben im B3D. Aber du kannst in Blitz3D selbst per Befehl nur 2 UV Sets haben. Das B3D Format aber unterstützt scheinbar mehr (ausser er hätte da seine "ursprünglichen" Ideen dokumentiert ^^) |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
BIG BUG |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ist doch nicht so schwer(zwar kein BB aber außer bei der For-Schleife machts eh keinen Unterschied):
Code: [AUSKLAPPEN] b3dBeginChunk( "BRUS" ); b3dWriteInt( val_texcnt ); //textures per brush b3dWriteString( mat->GetName() ); //name b3dWriteVector( val_color ); //RGB-color b3dWriteFloat( 1-val_transp ); //alpha b3dWriteFloat( val_specular ); //shininess b3dWriteInt( val_blend ); //blend b3dWriteInt( val_entityfx ); //FX for (tex=0; tex < val_texcnt; tex++) { b3dWriteInt( g_arr_tex_for_brush[tex] ); //Texture } b3dEndChunk(); //end of BRUS chunk val_texcnt enthält die Anzahl der Texturen für diesen Brush und genau so oft wird halt ein Int mit dem Texturindex angehängt... Index 0 ist unterste Schicht, Index 1 dann zweitunterste usw. Irgend welche Leertexturen bringen Dir nix, also kannst Du da getrost drauf verzichten. Und ich kann Dir versichern, dass das so funktioniert... |
||
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final) |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group