Zurück   3dmaxforum.de > 3ds Max > 3ds Max - Plugins und Skripte
Zurzeit aktive Benutzer im Chat: 0
Mit 10 Benutzern waren die meisten Benutzer an einem Tag im Chat (14.03.2008).
Zurzeit ist kein Benutzer im Chat.

Bücher
Digital Lighting and Rendering 3ds max 2009 Workshops Poly-Modeling with 3ds Max: Thinking Outside of the Box Deconstructing the Elements with 3ds max How to Cheat in 3ds Max 2009: Get Spectacular Results Fast

über 3dmaxforum.de bestellen

über 3dmaxforum.de bestellen

über 3dmaxforum.de bestellen

über 3dmaxforum.de bestellen

über 3dmaxforum.de bestellen

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 28.07.2008, 01:18   #1
neuer Benutzer
 
Registriert seit: 02.07.2007
Beiträge: 8
Al-m hat noch keine Resonanz auf seine Beiträge erhalten, um sein Renomee anzuzeigen
Standard Collapse-Submat Skript erweitern

Hallo zusammen,

ich habe neuerdings ein Skript gefunden, welches mir bei der Modellierung meiner Mod hilft.

Es geht darum, dass ich beim Modelln sehr viele Texturen pro Mesh benutze. Es sind alles Multi/Sub Materials mit einer Bitmap im Diffuse und in bestimmten Fällen keine Map im Diffuse.

Oft sind es gleiche Texturdateien, die in den Dateien benutzt werden. Es kommt auch oft vor, dass ich verschiedene Meshes zusammenfüge und sie weiterbearbeite. Nach dem Verbinden habe ich dann die Multi/Sub Materialien beider Meshes drin.

Jetzt möchte ich, dass das Skript alle ID's durchgeht und checkt, ob sich gleiche Texturdateien (Es sind immer *.tga Texturen) im Multi/Sub befinden. Wenn ja, dann soll es alle auf eine ID fassen und allen betroffenen Polygonen diese ID zuweisen. Das Gleiche soll es auch bei den Fällen sein, wo es sich um ein Diffuse ohne Map handelt (siehe MaterialLib im Anhang. ID 5,6 und 7 Name: "GHOSTOCCLUDER"). Diese Texturen brauche ich, da die Engine bei dem Namen eine spezielle Aktion durchführt.

Ich bin mir unsicher, wie das Skript genau arbeitet (siehe unten), aber in manchen Fällen habe ich im Material Editor immer noch paar ID's mit der gleichen Texturdatei (Siehe MatLib z.B.: ID 5,6,7 oder 18,19 oder 20,21 etc.). Deshalb glaube ich nicht, dass das Skript sich die Texturdateien anschaut und vergleicht.

Das Ganze brauche ich, da dummerweise das Programm zum Spiel in diesen Fällen Probleme macht.

Hoffe, dass es soweit verständlich ist. Sonst erkläre ich es nochmal.

Hier erstmal das Skript:
Code:
macroScript CollapseMM category:"Larry Minton" tooltip:"Collapse Multi-Materials" 
(

-- Collapse Mult-Material Script
-- Larry Minton (Link gesperrt)
-- 11/18/98

Utility CollapseMat "Collapse MultiMaterial" (

local theMat, uniqueMats, mapTo, theObj
struct aMat (theInstance, theDiffusemap)

Label l_PickObj "Object:"
PickButton PickObj "none"

label l_nMatIDs_t "Obj Max MatID:" across:2 align:#left
label l_nMatIDs_n ""

label l_nSubMats_t "# SubMats:" across:2 align:#left
label l_nSubMat_n ""

label l_nUniqueSubMats_t "# Unique SubMats:" across:2 align:#left
label l_nUniqueSubMat_n ""

Button DoIt "Collapse Material" enabled:false

on PickObj picked obj do 
(    theObj=obj
    if classof obj != Editable_mesh do
        if canConvertTo obj mesh then
            convertToMesh obj
        else
            throw "Cannot convert object to Editable Mesh"
    PickObj.text=obj.name
    theMat=obj.material
    if classof theMat != Multimaterial do throw "Object Material not a MultiMaterial"
    l_nSubMat_n.text=theMat.numsubs as string
    local SubMatUsed=#()
    for f=1 to obj.numfaces do
        SubMatUsed[getFaceMatID obj f]=true
    l_nMatIDs_n.text=SubMatUsed.count as string
    uniqueMats=#()
    mapTo=#()
    for m=1 to theMat.numsubs do
    (    if SubMatUsed[m] != true do continue
        local thisMatDBitmap=undefined
        if classof theMat[m] == StandardMaterial do
            if classof theMat[m].diffusemap == Bitmaptexture do
                thisMatDBitmap=theMat[m].diffusemap.filename
        if thisMatDBitmap == undefined do
        (    append uniqueMats (aMat theMat[m] thisMatDBitmap)
            mapTo[m]=uniqueMats.count
            continue
        )
        local foundMatch=false
        for p=1 to uniqueMats.count do
            if thisMatDBitmap == uniqueMats[p].theDiffusemap do
            (    mapTo[m]=p
                foundMatch=true
                continue
            )
        if not foundMatch do 
        (    append uniqueMats (aMat theMat[m] thisMatDBitmap)
            mapTo[m]=uniqueMats.count
        )
    )
    l_nUniqueSubMat_n.text=uniqueMats.count as string
    doIt.enabled=true
)

on DoIt pressed do
(    local NewMMat=Multimaterial numsubs:uniqueMats.count name:(theObj.name+"_"+theObj.material.name)
    for m=1 to uniqueMats.count do
        NewMMat[m]=copy uniqueMats[m].theInstance
    for f=1 to theObj.numfaces do
    (    local oldID=getFaceMatID theObj f
        setFaceMatID theObj f mapTo[oldID]
    )
    theObj.material=NewMMat
    update theObj
    DoIt.enabled=false
)
)
)
Wenn das nicht viel Arbeit ist, dann wäre es noch super, wenn man das Skript von Scrimski (Ein User aus dem Forum) noch einbauen könnte. Er hat mir das 2007 erstellt. Link zum alten Thema: Link gesperrt
Code:
--multiMatRenamer  
--by scrimski  
--usage at your own risk 

mat = $.material  
num = mat.numsubs   
matArr = mat.materialList  

for i = 1 to num do  
    ( 
    if matArr[i].diffuseMap != undefined then     
        ( 
        matArr[i].name = getFilenameFile ((matArr[i].diffuseMap.filename) as string) 
        ) 
    )  
Da ich überhaupt keine Ahnung vom 3dsMax Skript habe, würde ich mich freuen, wenn sich einer die Zeit nehmen könnte mir zu helfen.

Grüße
Al-m

Edit: Hier noch der Link zur MatLib: Link gesperrt
Al-m ist offline  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Mit Zitat antworten
Sponsored links
Antwort


Themen-Optionen
Ansicht

Forumregeln
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren

BB-Code ist An.
Smileys sind An.
[IMG] Code ist Aus.
HTML-Code ist Aus.
Trackbacks are An
Pingbacks are An
Refbacks are An

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Auswahl erweitern Alpha Zen 3ds Max - Modellieren 2 25.07.2007 16:24
Objekte vereinfachen / Collapse cherco 3ds Max - Modellieren 3 15.06.2007 13:44
collapse controller bei verlikten Objekten darkman222 3ds Max - Animation 4 14.06.2006 19:40
Modifier erweitern ? Velmar 3ds Max - Plugins und Skripte 0 09.11.2005 13:53
Poly's erweitern? wortgewannt 3ds Max - Einsteiger 1 09.01.2005 12:57


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:20 Uhr.


Powered by vBulletin Version 3.7.0 (Deutsch)
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5
Template-Modifikationen durch TMS
Copyright ©2002 - 2008, 3dmaxforum.de
Ad Management by RedTyger