If you are curious click this link
February 25, 2009
January 31, 2009
Intersection of a line and a Cone
Currently I am trying to make some volume lights at work
To optimise I need to work out where the eye ray intersects a implicit cone
You will find some links and a quick animation below
When I have cracked the renderman solution I may post that too
January 22, 2009
In memory of Vida Symons: Nanna
I wrote this on the 23 January 2008 8:10:17 PM
Our Dearly Beloved Grandmother had passed away, it wasnt a shock, she was an old lady and it was her time to go
This year we are heading back to Kangaroo Island to scatter her ashes on the family farm
January 12, 2009
voxel madness
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
January 10, 2009
A prediction of shadows with six meter trees (Ornamental Pear)
Since the previous attempt with the large purple spheres, went back to the scene file and check the scale and looked at the tree we are wanting to plant , ornamental pears
Burkes Backyard gives them a rundown here
We are looking at getting the cultivar called “Capital” because its tall and thin
Capital Pear (Pyrus calleryana ‘Capital’)
Columnar flowering tree. White flower clusters in early spring. Green glossy leaves change to purple in the fall. Used in narrow spaces.
(35′ tall x 15′ wide) Zone 5
Available 5 gal, 15 gal, 2-1/4″ 2-1/2″
We went and looked at a few at Engel Trees and Paul there was really really helpful
The image also now has a uniform colour and details such as the screen and the shed and the other hedging plants
Flash Interactive Link click and drag to interact
NB: the image has been updated with a Month and Hour indicator, month is where 1 = January and 12 = December, and Hour 1 = 1am, 13 = 1pm, etc
The Sun Sets in the West, doesnt it?
Having completed the construction of the house in July we moved in an were extremely happy with how the garden was progressing
one interesting thing is that the sun changes directions with the seasons
Using my computer graphics background I whipped up the rough example about how the situation would be changed by planting three trees
The trees are represented by the big purple ovals
Amazing direction of the sun, scroll, left for season, up and down for time of day
Click here for interactive image
Click and drag, or use arrow keys to interact
January 5, 2009
Once I was young
I used to look like this when I was at Uni all those years ago, I think this is circa 1992.
Which makes you wonder why I was scanning my student card
, all those years ago, but it does make me realise ive been pushing pixels around for quite some time, but the pixels that make up my face have cahnged a bit over time too