-
Notifications
You must be signed in to change notification settings - Fork 3
Exporting för Modeller, Banor och Texturer
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
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 Så 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)
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å):
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.