-
Notifications
You must be signed in to change notification settings - Fork 3
Blender script
Namn på objekt i blender för att trigga olika funktioner i spelmotorn.
- CP.uniktnamn
- LX.type.diffuseHex.specularHex.ambientHex.gloss.dist.pwr.constAtt.linAtt.quadAtt
- L.type.dR.dG.dB.sR.sG.sB.aR.aG.aB.gloss.dist.pwr.constAtt.linAtt.quadAtt
- SP.namn.uniktnamn
- I.filnamn.uniktnamn
. används som separator
Sätts på empties som man vill ska tolkas som connection points i motorn. Till exempel öppningar i kammare/tunnlar, eller hard points på skepp/skeppsmoduler. Z-axeln på emptyn kommer tolkas som dess "framåtriktning". Vid ihopkoppling i motorn av två delar med connection points kommer dessa peka mot varandra med denna axel. "uniktnamn"-delen används endast här för att objektet ska bli unikt i blender.
Om inte detta objekt har en parent kommer den att få första objektet som parent i motorn. (Så som det fungerar nu)
Exempel:
- CP.right
- CP.01
- CP.002
- CP.whatever
Helt klart den drygaste, och under utveckling. "jippi"
Sätts på empties som man vill ska tolkas som lampor i motorn. Om inte detta objekt har en parent kommer den att få första objektet som parent i motorn. (Så som det fungerar nu)
Färger sätts som hex-värden(färgpaletten i blender kan visa värden i hex) eller som RGB-komponenter(resulterar i fler parametrar). Dist motsvarar Dist-värdet för ljuset, med Sphere ikryssat(mest troligt). gloss är glossiness-faktorn.
constAtt, linAtt, quadAtt definierar attenuation, dvs hur ljuset avtar med avståndet. Detta är den knepigaste biten att få rätt jämte blenders ljussättningssytem, så här får vi ha tålamod och testa oss fram. Mest troligt är det att Fallof satt till Lin/Quad Weighted blir mest rätt(ingen garanti dock), där linAtt=Line och quadAtt=Quad och constAtt=godtyckligt värde. :D
pwr är power och används just nu bara för spotlight power, sätt till 1 om någon annan form av ljus så länge.
Tyvärr måste decimal specas med d, på grund av hur blender separerar strängar och hur blender exporterar dem. 0.5 blir få 0d5 och 1.03 blir 1d03, osv.
type kan vara:
- point
- dir
- spot
Exempel:
Som hex: LX.type.diffuseHex.specularHex.ambientHex.gloss.dist.pwr.constAtt.linAtt.quadAtt
L.point.9AFF8A.FFFFFF.000000.0.533d896.1.0d0.0d08333.1
Som RGB: L.type.dR.dG.dB.sR.sG.sB.aR.aG.aB.gloss.dist.pwr.constAtt.linAtt.quadAtt
L.point.0d323.1.0d254.1.1.1.0.0.0.0.533d896.1.0d0.0d08333.1
Varje del i ordning:
- Detta ger ett point light med ljusgrön diffuse, vit specular och svart ambient.
- Gloss är svart.
- Den kommer ha en range op 533.896 units.
- Power kommer vara 1.
- Konstant faktor i attenuation kommer vara 0.0.
- Linjär faktor i attenuation kommer vara 0.08333.
- Kvadratisk faktor i attenuation kommer vara 1.0.
Också för empties, fungerar precis som connection point, förutom att den säger till motorn att här ska någonting spawnas. "namn"-delen anger det namn som motorn ska tolka för vad som ska spawnas. Detta kan fördelaktligen vara ett namn på ett assemblage(OBS! utan filändelse) för det som ska spawnas, men beteendet för hur denna sträng ska tolkas lämnas till systemet som använder den.(som det fungerar nu) "uniktnamn"-delen används endast här för att objektet ska bli unikt i blender.
Om inte detta objekt har en parent kommer den att få första objektet som parent i motorn. (Så som det fungerar nu)
Exempel:
- SP.missile.001
- SP.hejhopp.123
- SP.mine.abc
- SP.someAction.000
Exempel på tolkning av systemen:
(pseudokod)
- Load assemblage name+".asd" Laddar assemblage missile.asd
- if (name=="hejhopp") doSomething() Gör något om spawnpoint är "hejhopp"
- Load assemblage name+".asd" Laddar assemblage mine.asd
- doSomething(name) {if (name=="someAction") print("hej") else print("derp");} Gör något om spawnpoint är "someAction"
Kan sättas på både empties, appended, proxies eller objekt. Säger till motorn att här ska det finnas ett instansierat objekt från en viss fil. "filnamn"-delen används för att specifiera namnet på den agl-fil som ska läsas in i själva spelet. Filnamns-extension behöver inte anges. "uniktnamn"-delen används endast här för att objektet ska bli unikt i blender.
För enkelhetens skull bör inte dessa objekt ha en parent.
Exempel:
I.Rock.001
- (använder Rock.agl)
I.Rock2.002
- (använder Rock2.agl)
I.Tree.001
- (använder Tree.agl)
I.Wheel.whatever
- (använder Wheel.agl)
Som det ser ut nu så kan varje fil komma att behöva minst en normal mesh utan specialsyntax. Detta kan ändras framöver om absolut nödvändigt.