Mehrere Grafiklayer in 3D Studio MAX



  • Hallo zusammen, wie kann ich in 3D Studio MAX mehrere Texturelayer definieren? Wenn ich die *.max Dateien in *.3DS Dateien exportieren und anschliessend ins *.x format konvertiere. So sollen die Vertices die Texturekoordinaten von 2 Texturstages beinhalten. Was aber natürlich unter normalen Umständen leider nicht der Fall ist.

    Mit freundlichen Grüssen Ishildur



  • 1. Was hat das mit Programmieren zu tun
    2. www.google.de
    3. Suche: http://www.c-plusplus.net/forum/search-var-.html



  • Nun ja, es hat zumindest was mit Direct3D zu tun, oder etwa nicht?


  • Mod

    naja, aber grahpiktool fragen im programmiereforum zu stellen...naja... ich würde zumindestens nicht erwarten, dass dir hier jemand so gut helfen könnte wie in einem graphiker forum. notfalls ne mail an den support von ms. 😉

    rapso->greets();



  • Naja, aber es ist doch zumindest naheliegend, das Leute, welche 3D - Spiele programmieren, auch mit einem 3DStudio MAX umgehen können und möglicherweise auch gewisse Portierungsschwierigkeiten gehabt haben oder liege ich da völlig falsch?
    Wenn jemand eine Lösung kennt, so kann er mir doch helfen und wenn nicht, dann ist ja auch nichts verloren?

    Manche Leute machen sich anscheindend mehr Gedanken darüben, ob sich eine Frage nun "juristisch" betrachtet im richtigen Forum befinden, als über die Frage an sich, welche möglicherweise in zwei drei Sätzen beantwortet wäre. Ob dies der Ursprüngliche Sinn dieses Forums gewesen sein mag?

    Für diejenigen unter euch, welche im Umgang mit 3DStudio MAX und Direct3D9 versiert sind und den Teamgeist besitzen, anderen Leuten zu helfen, stelle ich nochmals die Frage:

    1. Wie kann ich in 3DStudio MAX mehrere Texturlayers verwenden, sodass bei einer Konvertierung zu einer *.x Datei jeder Vertex 2 oder mehrere separate Texturkoordinaten speichert. Auch bekannt als Multitexturing

    2. Wie kann ich erreichen, dass Bspw. eine Kugel, Auf der Aussenseite sowie auch auf der Innenseite sichtbar ist? Wenn ich eine grosse, transparente Glaskuppel haben will, welche sichtbar ist, wenn sich die Kamera ausserhalb der Kuppel, aber natürlich auch, wenn die Kamera sich innerhalb befindet?

    Vielen Dank und mit freundichen Grüssen Ishildur

    P.S.
    Wir alle hier haben ein gemeinsames Ziel, das entwicklen von guten Computerspielen im privaten Rahmen. Ein gemeinsames Ziel erreicht man schneller, wenn man einander gegenseitig unterstützt und ergänzt. Die Schwächen des Einen sind die Stärken eines Anderen und umgekehrt.
    Die amerikanische sowie die russiche Weltraumfahrt haben gelernt, dass man seine Ziele schneller und effizienter erreicht, wenn man einander gegenseitig achtet und unterstützt, als wenn man sich gegenseitig Knebel zwischen die Beine schmeisst.





  • Hallo,

    ich denke Du brauchst Dich für Deine Frage nicht zu rechtfertigen, weil welcher Grafiker könnte Dein Problem schon lösen?

    Du kannst im 3d studio im Materialeditor für jeden Layer den "Map Channel" einstellen. Den gleichen Wert kann man auch beim erstellen der Texturkoordinaten angeben, so dass man jeder Textur eigene Koordinaten zuweisen kann.

    Das Problem wird aber sein, dass .X nur ein Koordinatenset unterstützt (zumindest wird nur eins exportiert, habe ich grade ausprobiert)

    Was möchtest Du denn mit den 2. Texturkoordinaten machen? Vielleicht lässt es sich ja durch eine Matrixtransformation bewerkstelligen.

    Wenn ich die *.max Dateien in *.3DS Dateien exportieren und anschliessend ins *.x format konvertiere

    Wieso machst Du das?
    Versuch mal das hier:
    http://www.andytather.co.uk/Panda/directxmax.aspx


  • Mod

    0x00000001 schrieb:

    Hallo,

    ich denke Du brauchst Dich für Deine Frage nicht zu rechtfertigen, weil welcher Grafiker könnte Dein Problem schon lösen?

    jeder halbwegs gute max modeller kann das sicherlich lösen, ich hab auch versucht welche hier reinzutriezen, aber die wollen sich nicht nur wegen der frage bzw antwort gleich regestrieren und meinten "soll er halt nen graphikerboard besuchen".

    rapso->greets();



  • Ishildur schrieb:

    Naja, aber es ist doch zumindest naheliegend, das Leute, welche 3D - Spiele programmieren, auch mit einem 3DStudio MAX umgehen können

    Nö, das ist überhaupt nicht naheliegend. Eher produzieren solche Leute da nur Schrott, siehe ich.

    Bye, TGGC



  • @ 0x00000001

    Ich muss auf gewisse Oberflächen 2 Texturen mappen, um diese anschliessend mit Texturetranslationen in entgegengesetzte Richtungen zu transformieren. Ich möchte auf diese Weise einen Schutzschild animieren. Da kommt auch das Problem mit der Sphere, welche auf der Innen sowie auf der Aussenseite sichtbar sein sollte. Denn das Raumschiff befindet sich ja innerhalb der Sphere...



  • Das ist dann ja alles eigentlich kein Problem.
    Jeder Vertex der Kugel hat eine Texturkoordinate. Durch zwei verschiedene Matrizen werden die jeweils transformiert, so dass Du dann 2 unterschiedliche Texturkoordinaten erhältst.
    An diesen zwei Koordinaten liest du dann die Farbe des Schildes aus einer (oder zwei) Textur(en), und multiplizierst die beiden Werte.

    Wenn der Schild von beiden Seiten sichtbar sein soll, musst Du das Backface Culling deaktivieren.



  • Ich glaube, du hast das nicht ganz richtig verstanden:
    Ich möchte ein Model mit 2 Texturen bespannen und die eine horizontal und die andere vertikal verschieben. Dazu möchte ich Multitexturing verwenden. Für diese Technologie muss allerdings jeder Vertex über 2 Texturkoordinaten verfügen. Die währe kein Problem, wenn ich das FVF bestimmen würde, doch leider macht dies die *.x Datei.

    Das Backface - Culling zu deaktivieren war auch mein erster Gedanke, doch leider entstehen dabei unter DirectX ganz hässliche grafische Artefakte. Ausserdem müssen ja die normelen auch nach innen und nach aussen zeigen, wegen der Lichtberechnungen.

    Mit freundlichen Grüssen Ishildur



  • Daraus lese ich dass Du noch die "Fixed function pipeline" verwendest (also keine shader). Mit shadern könntest Du Dein Problem viel einfacher lösen denke ich, aber es müsste natürlich auch so gehen.

    Ich würde mal
    pDevice->SetTextureStageState( 1, D3DTSS_TEXCOORDINDEX, 0 );
    versuchen.
    Damit wird für die zweite Textur auch die erste (d.h. die null-te) Koordinate verwendet.

    hässliche grafische Artefakte

    liegt es am z-buffer?



  • Liegt es am Z-Buffer?

    Ich benutze folgende Renderstates und TextureStageStates...

    this->ppDev.AutoDepthStencilFormat = D3DFMT_D24S8;
    
    // prepare the device for rendering the world
    this->pD3DDev->SetRenderState(D3DRS_CULLMODE,D3DCULL_NONE);
    this->pD3DDev->SetRenderState(D3DRS_SHADEMODE,D3DSHADE_GOURAUD);
    this->pD3DDev->SetRenderState(D3DRS_LIGHTING,true);
    this->pD3DDev->SetRenderState(D3DRS_ZENABLE,D3DZB_TRUE);
    this->pD3DDev->SetRenderState(D3DRS_ZWRITEENABLE,true);
    this->pD3DDev->SetRenderState(D3DRS_SPECULARENABLE,true);
    
    // configurate the texture - blending options
    for(i=0;i<3;i++){
     this->pD3DDev->SetTextureStageState(i,D3DTSS_TEXCOORDINDEX,0);
     this->pD3DDev->SetTextureStageState(i,D3DTSS_COLORARG2,D3DTA_CURRENT);
     this->pD3DDev->SetTextureStageState(i,D3DTSS_ALPHAARG2,D3DTA_CURRENT);
    }
    

    Habe ich da was falsch gemacht, was die grafischen Artefakte verursachen könnte?

    Wie kann ich sonst eine Kugel modelieren, welche von innen sowie von aussen sichtbar ist?



  • D3DRS_ZWRITEENABLE würde ich mal ausmachen, der Schild soll ja nichts verdecken. (Ich geh davon aus, dass dieser Schild so aussehen soll wie man es aus StarTrek kennt)

    Ansonsten weiß ich nicht was das für Artefakte sein könnten, vielleicht kannst Du mal ein Bild davon herzeigen.



  • Hallo,

    als Nichtprogrammierer fällt mir nur ein:
    Nimm 2 Modelle deines Schutzschildes, wobei du beim Inneren die Normalen umdrehst, damit sie nach Innen zeigen. Bei Texturen mit Alphatransparenz sieht man dann von Innen und Aussen beide Texturen.
    Hilfreich?

    Peer


Anmelden zum Antworten