Blender Live Shapes (018; 06.09.2009; blender, processing)
Blender Live Shape 1.0 from MyInventions on Vimeo.
Koncepcja.
Uwagi praktyczne.
I co dalej?
Mam nadzieję, że wraz z nową wersją Blendera (2.5) pojawi się działające polecenie, które pozwoli dynamicznie odświeżać siatkę kolizji obiektu. W efekcie pozwoliło by to na zaistnienie fizycznych interakcji między obiektem typu BLS, a innymi obiektami dynamicznymi.
Pliki do pobrania:
Processing: BlenderLiveShape.pde
Kod źródłowy Processing:
import processing.serial.*; import processing.video.*; Serial myPort; Capture webcam; int liczbaPikseli; color Kolor; int A, R, G, B, Y, j=1; String name; int t, T; void setup() { size(200, 150); println(Serial.list()); myPort = new Serial(this,"COM10", 9600); webcam = new Capture(this, width, height, 10); //framerate:10 liczbaPikseli = webcam.width*webcam.height; //webcam.settings(); } void draw(){ if (webcam.available() == true){ webcam.read(); set(0, 0, webcam); loadPixels(); for (int i=0; i < liczbaPikseli; i++){ Kolor = pixels[i]; R = (Kolor >> 16) & 0xFF; G = (Kolor >> 8) & 0xFF; B = Kolor & 0xFF; Y=int(0.3*R+0.59*G+0.11*B); A = 255 << 24; R = Y << 16; G = Y << 8; B=Y; pixels[i]=A|R|G|B; } updatePixels(); name=str(j)+".png"; saveFrame(name); myPort.write(char(j)); j++; if (j==6){ //T=millis()-t; //println(5000.0/T); //print real frame rate //t=millis(); j=1; } } }
Blender python API:
import Blender from Blender import Image from Blender import Texture from Blender import Material from Blender import Object from Blender import Window from Blender import Modifier from Blender import Scene import serial myPort = serial.Serial('COM11', 9600) texture=Texture.Get('Textura') texture.setType('Image') scene=Scene.getCurrent() plane=Object.Get('Plane') modifier=plane.modifiers[0] myPort.flushInput() for i in range(1, 301): y = ord(myPort.read(size=1)) name=str(y)+".png" image=Image.Load(name) texture.image=image modifier[Modifier.Settings.TEXTURE] = texture Window.EditMode(1) Window.EditMode(0) Window.Redraw()
Blender Game Engine python:
import Blender from Blender import Image from Blender import Texture from Blender import Material from Blender import Object from Blender import Window from Blender import Modifier from Blender import Scene import serial myPort = serial.Serial('COM11', 9600) texture=Texture.Get('Textura') texture.setType('Image') scene=Scene.getCurrent() plane=Object.Get('Plane') modifier=plane.modifiers[0] y = ord(myPort.read(size=1)) name=str(y)+".png" image=Image.Load(name) texture.image=image modifier[Modifier.Settings.TEXTURE] = texture controller = GameLogic.getCurrentController() obj = controller.owner mesh = obj.meshes[0] obj.replaceMesh(mesh)