Samiam’s Scribble Pad

May 19, 2009

AFTRS May 2009

Filed under: linkedin,Uncategorized — Tags: , — admin @ 9:57 am

Yesterday, Dan Thompson, Fred Chapman, Cam Langs, Sara Henschke and myself from Rising Sun went for a visit to the students from AFTRS (Australian Film Radio and Television School) in Kensington.

Its in the same location where Rising Sun Pictures used to be.

The Students were really keen to soak up what we had to say, and for people making a start they seemed to be making a fair effort.

We went to the pub for a meal afterwards and it was good to catch up with someone in the industry in Adelaide besides colleagues at RSP.

January 12, 2009

voxel madness

Filed under: linkedin,Uncategorized — Tags: , — admin @ 11:07 pm

Basically I want a big block of RiPoints to shade into, so I made them like this

I used  cgKit to make a big block of points, now I just need to see how it performs under stress

Parent Voxel script

voxelParent.py

#!/usr/bin/env python
from cgkit.ri import *
 
"""
RiProcedural(data, bound, subdividefunc, freefunc=None)
    Declare a procedural model.
 
    subdividefunc and freefunc may either be the standard RenderMan
    procedurals (RiProcDelayedReadArchive, RiProcRunProgram,
    RiProcDynamicLoad and RiProcFree) or Python callables.
    In the former case, data must be a sequence of strings or a single
    string containing the data for the functions. In the latter case,
    data may be any Python object which is just passed on to the
    functions.
    freefunc is optional and defaults to None.
 
    Because this module can only produce RIB, a custom subdivide function is
    simply called with a detail value of RI_INFINITY to generate all the
    data at once.
 
    Example: RiProcedural("mymodel.rib", [-1,1,-1,1,-1,1], \
                          RiProcDelayedReadArchive, RI_NULL)
 
             RiProcedural(["python teapot.py",""],[0,1,0,1,0,1], \
                          RiProcRunProgram, RI_NULL)
 
             RiProcedural(["teapot.so",""],[0,1,0,1,0,1], \
                          RiProcDynamicLoad, RI_NULL)
"""
 
import sys
 
args = sys.stdin.readline()
 
while args:
	arg = args.split()
	size=float(arg[0])
	parts=int(arg[1])
	seed=int(arg[2])
	childCount=int(arg[2])
	childSeed = seed
	for xstep in range(parts):
		for ystep in range(parts):
			for zstep in range(parts):
				xmin = xstep - 0.5*size/parts - size*0.5
				xmax = xstep + 0.5*size/parts - size*0.5
				ymin = ystep - 0.5*size/parts- size*0.5
				ymax = ystep + 0.5*size/parts- size*0.5
				zmin = zstep - 0.5*size/parts- size*0.5
				zmax = zstep + 0.5*size/parts- size*0.5
				childSeed+=1
				print RiProcedural(["python voxelChild.py","%s %s %s %s %s %s %s %s" % (xmin,xmax,ymin,ymax,zmin,zmax,childSeed, childCount)],[xmin,xmax,ymin,ymax,zmin,zmax], RiProcRunProgram, RI_NULL)
	sys.stdout.write('\377')
	sys.stdout.flush()
	args = sys.stdin.readline()

Child Voxel Script

#!/usr/bin/env python
from cgkit.ri import *
 
from cgkit.cgtypes import *
 
import sys
import random
args = sys.stdin.readline()
 
while args:
	arg = args.split()
	xmin=float(arg[0])
	xmax=float(arg[1])
	ymin=float(arg[2])
	ymax=float(arg[3])
	zmin=float(arg[4])
	zmax=float(arg[5])
	childSeed=int(arg[6])
	childCount = int(arg[7])
	pointList = []
	pointSize = vec3(xmax-xmin,ymax-ymin,zmax-zmin).length() / float(childCount)
	for xstep in range(childCount):
		childSeed+=1
		random.seed(childSeed)
		xval = random.uniform(xmin,xmax)
		random.jumpahead(1)
		yval = random.uniform(ymin,ymax)
		random.jumpahead(1)
		zval = random.uniform(zmin,zmax)
		random.jumpahead(1)
		pointVal = vec3(xval,yval,zval)
		pointList.append(pointVal)
	print RiPoints(P=pointList,constantwidth=[pointSize])
	sys.stdout.write('\377')
	sys.stdout.flush()
	args = sys.stdin.readline()

Just add brick map or ptc based 3d look up shader and rejoice!

I still have an outstanding testing of seeing if it acutally produces geometry and see if it looks good, but they are small details ;)

Powered by WordPress