for about 2 weeks now I`ve been working on a human skin shader. As this is a paid job for medical simulation, it has to look as close as possible to real life. Though as this is a paid job it means that there will not be free code sample here yet. Shader consists of simple math so it runs really fast.
Features:
- Widely customizable (could be used for any material)
- Tangent-space normal mapping
- Supports up to 8 lights (OpenGL has 8 light limit)
- Spherical Harmonics lighting
- Advanced specular reflections with fresnel ramp
screenshots:
standart phong shading for comparison:
Labels
- shaders (26)
- Blender (10)
- Racing game (10)
- BGE Candy (5)
- DoF (5)
- 3d models (4)
- bokeh (4)
- volumetric (4)
- platformer game (3)
- sky (3)
- BGE Air Race (2)
- SSAO (2)
- raycasting (2)
- status (2)
- WebGL (1)
- stereo 3D (1)
- tron (1)
- tutorials (1)
- webcam (1)
April 12, 2011
April 6, 2011
webcam head tracking using FaceAPI
FaceAPI is a real-time head-tracking engine which uses webcam input to acquire 3D position and orientation coordinates per frame of video. And it works!
I implemented it in Blender Game Engine for cockpit view of BGE Air Race game.
and here is how I got it working in BGE
1. Downloaded FaceAPI here: LINK
2. Downloaded FaceApiStreamer here: LINK
(exports 6 degrees of freedom head tracking to a UDP socket connection)
3. Acquire the values from FaceApiStramer in BGE with Python code like this (not sure if it is quite right, but it kinda works):
Here is a blend file: LINK
you will need FaceAPI instaled and FaceApiStreamer running in background.
I implemented it in Blender Game Engine for cockpit view of BGE Air Race game.
and here is how I got it working in BGE
1. Downloaded FaceAPI here: LINK
2. Downloaded FaceApiStreamer here: LINK
(exports 6 degrees of freedom head tracking to a UDP socket connection)
3. Acquire the values from FaceApiStramer in BGE with Python code like this (not sure if it is quite right, but it kinda works):
from socket import *
controller = GameLogic.getCurrentController()
own = controller.owner
if own["once"] == True:
# Set the socket parameters
host = "127.0.0.1"
port = 29129
addr = (host,port)
# Create socket and bind to address
GameLogic.UDPSock = socket(AF_INET,SOCK_DGRAM)
GameLogic.UDPSock.bind(addr)
GameLogic.UDPSock.setblocking(0)
own["once"] = False
GameLogic.UDPSock.settimeout(0.01)
try:
data,svrip = GameLogic.UDPSock.recvfrom(1024)
str = data.split(' ')
own['xPos'] = float(str[0])
own['zPos'] = float(str[1])
own['yPos'] = float(str[2])
own['pitch'] = float(str[3])
own['yaw'] = float(str[4])
own['roll'] = float(str[5])
except:
pass
Here is a blend file: LINK
you will need FaceAPI instaled and FaceApiStreamer running in background.
Subscribe to:
Posts (Atom)