#!/usr/bin/blender """ Name: 'Lephisto Sprite Renderer' Blender: '242' Group: 'Export' Tip: 'Renders images and places them in a directory' """ # # Lephisto Sprite Renderer # # NOTE: You must set the context.renderPath variable on line 122 to your chosen directory. # ########################### # importing modules ########################### import Blender import math from math import * from Blender.BGL import * from Blender.Draw import * from Blender import Scene from Blender import Object from Blender import Lamp from Blender import Camera from Blender import NMesh from Blender import Types from Blender.Scene import Render ########################### # random initialization ########################### objList = Blender.Object.Get() print objList fileName = Blender.Get('filename') scn = Blender.Scene.GetCurrent() context = scn.getRenderingContext() Render.EnableDispWin() context.extensions = True context.imageType = Render.PNG context.enableOversampling(0) osaafter = 1 ypos=5 sliderLight = Create(0) ########################### # GUI ########################### def draw() : global Button3, Button2, Button1 global sliderWidth, sliderLight, sliderSpriteSize, sliderObjectSize global ypos glClearColor(0.753, 0.753, 0.753, 0.0) Blender.BGL.glClear(Blender.BGL.GL_COLOR_BUFFER_BIT) glColor3f(0.000, 0.000, 0.000) glRasterPos2i(10, ypos) Button('Exit', 1, 10, ypos, 50, 15, 'Exit script') ypos = ypos + 20 Button('Render', 2, 10, ypos, 50, 15, 'Render the ship with current settings') ypos = ypos + 20 Button('Test', 3, 10, ypos, 50, 15, 'Test your settings') ypos = ypos + 20 Button('Initialize', 4, 10, ypos, 50, 15, 'Initialize the camera and lights') ypos = ypos + 40 sliderWidth = 300 sliderLight = Slider('Light Intensity ', 5, 10, ypos, sliderWidth, 25, sliderLight.val, 0, 10, .1, 'Light Itensity') ypos = ypos + 40 glColor3f(0.000, 0.000, 0.000) glRasterPos2i(10, ypos) Text('3: Finally push the "Render" button to render your frames.') ypos = ypos + 20 glRasterPos2i(10, ypos) Text('2: Hit the "Test" button to see if your lighting is good.') ypos = ypos + 20 glRasterPos2i(10, ypos) Text('1: Put in your settings and hit the "initialization" button.') ypos = ypos + 20 glRasterPos2i(10, ypos) Text('Usage:') ypos = ypos + 20 glRasterPos2i(10, ypos) Text('Created for Lephisto: http://saracraft.net') ypos = ypos + 20 glRasterPos2i(10, ypos) Text('Lephisto Sprite Renderer') def event(evt, val) : if (evt == QKEY and not val) : Exit() def bevent(evt) : if evt == 1 : Exit() elif evt == 2 : render() elif evt == 3 : test() elif evt == 4 : initialize() Blender.Draw.Register(draw,event,bevent) ########################### # Variables that should be # put into gui but will # remain in the script for now ########################### spriteSize = 500 context.renderPath = "/home/allanis/Code/Lephisto/utils/mksprite/" def initialize() : #################### # Orienting the object(s) # in the correct position #################### for obj in objList : if obj.getType() == 'Mesh' : obj.RotZ = 0 obj.RotY = 0 # obj.RotX = 45 ########################## # Onitializing the camera ########################## cam = Blender.Object.Get("Camera") cam.LocZ = 9.0 cam.LocX = -5.0 cam.LocY = 0 cam.RotY = 0 cam.RotX = 0 cam.RotZ = 0 cam.RotZ = -(pi / 2) cam.RotX = (pi / 7) ########################### # Setting up the lighting, bitches! ########################### for obj in objList : if obj.getType() == 'Lamp' : scn.unlink(obj) lamp = Blender.Lamp.New() Lamp1 = Blender.Object.New('Lamp', 'Lamp1') Lamp2 = Blender.Object.New('Lamp', 'Lamp2') Lamp1.LocZ = 4.0 Lamp1.LocX = 4.0 Lamp1.LocY = 0 Lamp2.LocZ = 2.0 Lamp2.LocX = -4.0 Lamp2.LocY = 0 Lamp1.link(lamp) Lamp2.link(lamp) lamp.setEnergy(sliderLight.val) scn.link (Lamp1) scn.link (Lamp2) def test() : context.imageSizeX(spriteSize) context.imageSizeY(spriteSize) context.render() def render() : ########################### # Rendering the first frame ########################### origSX = context.imageSizeX() origSY = context.imageSizeY() context.imageSizeX(spriteSize) context.imageSizeY(spriteSize) spriteName = '001' context.render() context.saveRenderedImage(spriteName) Render.CloseRenderWindow() ########################### # Rendering the rest of the frames ########################### for i in range(1,35+1) : n = str(i + 1) for obj in objList : if obj.getType() == 'Mesh' : obj.RotZ = ((pi * 2) / 36) * i spriteName = n.zfill(3) context.render() context.saveRenderedImage(spriteName) Render.CloseRenderWindow() ########################### # Returning settings to normal ########################### context.imageSizeX(origSX) context.imageSizeY(origSY) context.enableOversampling(osaafter)