Skip to content

Exporting för Modeller, Banor och Texturer

Spiderspy edited this page Mar 15, 2013 · 18 revisions

Exportering General

När man exporterar från blender följer man Blenders coordinate system som är XYZ där Y+ är innåt i skärmen och är dit modellers riktining ska peka. Det är viktigt att applicera transformationerna(Obs inte för instansierade objekt på banor!) så som Rotations,Translation,Scaling innan man börjar exportera.

Exportering via FBX ska ha följande ändringar från default, Selected Objects ska vara ikryssad och du har valt det som ska exporteras, Foward ska stå som Z Foward, Up ska stå som Y Up. Det här kommer resultera i en korrekt mesh och coordinate system XZY där Z+ är innåt i skärmen.

För animerade meshes: Se till att Blenders uppspelningshastighet ligger på 24 FPS innan export.

Bild på FBX Export Settings

setting

Exportering av Bana

Det är viktigt att inte applicera transformationer på instansierade objekt och att hålla koll på dina grund modeller till de instansierade objekten och inte ändra och applicera deras transformationer.

Kod för att sätta ut empties med ljus värden.

#lägger till empties med attribut i namnet på ljusen
import bpy
#change "." to "b"
def CDtD(nr):
    nrString = str(nr)
    if '.' in nrString:
        nrString = nrString.replace('.', 'd')
    if nrString[0] == '0':
        nrString = nrString[1:10]
    return nrString[0:4]

for item in bpy.data.objects:
    if item.type == 'LAMP':
        'CREATE EMPTY'
        bpy.ops.object.empty_add(type = 'PLAIN_AXES',location = item.location, rotation = item.rotation_euler)
        empty_ = bpy.context.active_object
        item.name
        #OBS! Objekt och lamp måste ha samma namn för att hitta varandra
        light = bpy.data.lamps[item.name]
        diffuse = '.'+CDtD(light.color.r)+'.'+CDtD(light.color.g)+'.'+CDtD(light.color.b)
        empty_.name
        if light.type == 'POINT':
            values = '.'+CDtD(light.distance)+'.'+CDtD(light.energy)+'.'+CDtD(light.linear_attenuation)+'.'+CDtD(light.quadratic_attenuation)
            empty_.name='LP'+diffuse+values
        if light.type == 'SPOT':
            values = '.0.'+CDtD(light.energy)+'.0'+'.0'
            empty_.name='LS'+diffuse+values
        if light.type == 'HEMI':
            values = '.0.'+CDtD(light.energy)+'.0'+'.0'
            empty_.name='LD'+diffuse+values
    
    

Hjälpsamkod  som byta namn eller stänga av modifiers
    
    import bpy
    #Stänger av subsurf och displace från viewporten
    for item in bpy.data.objects:
        if item.type == 'MESH':
            x = 'I.RockD_Square.'
            if x in item.name:
                item.modifiers["Subsurf"].show_viewport = False
                item.modifiers["Displace"].show_viewport = False
    
    
    import bpy
    #Byter namnet på meshen RockA.1000 till I.RockA.1000
    for item in bpy.data.objects:
        if item.type == 'MESH':
           x = "RockA."
           if x in item.name:
                item.name = item.name.replace(x,"I.RockA.",5)

Normalmaps

Vi använder Handplane för att skapa normalmaps med olika specifika tangent basis's för dem olika programmen vi kommer använda dem i eftersom detta gör att dem ser mer korrekta ut i respektive program pga renderings skiljaktigheter.

Handplane fungerar genom att vi kör in en world space normalmap tillsammans med en lowpoly modell och får ut en tangent space normalmap istället. Viktigt att tänka på är att modellen man kör in i Handplane måste vara orienterad (iaf roterad likadant) likadant som modellen man generarade OS normalmappen och att den inte innehåller några överlappande UV islands (inte ens mirrors, flytta ut allt överlappande utanför U din UV-range 1 snäpp istället). För vår spelmotor lämpar sig Source presetet bra men för Blender/Marmoset är Unity det bästa alternativet (även om det inte är helt bra heller).

Inställningar för Handplane (se till att applicera transforms också):

Blender inställningar för Handplane

Övriga texturer: Glowmap, Glossmap

Glowmaps är en gråskalig textur som kommer ligga som en mask i motorn för diffusen.

Glossmappen, ska läggas i normalmappens alpha och är gråskalig.