<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Samiam's Scribble Pad &#187; python cgkit renderman voxels</title>
	<atom:link href="http://www.hodge.net.au/sam/blog/tag/python-cgkit-renderman-voxels/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.hodge.net.au/sam/blog</link>
	<description>Random Thoughts of Sam Hodge, about Life, Art and Technology</description>
	<lastBuildDate>Mon, 01 Dec 2025 07:20:55 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>voxel madness</title>
		<link>http://www.hodge.net.au/sam/blog/2009/01/12/voxel-madness/</link>
		<comments>http://www.hodge.net.au/sam/blog/2009/01/12/voxel-madness/#comments</comments>
		<pubDate>Mon, 12 Jan 2009 12:07:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[linkedin]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[python cgkit renderman voxels]]></category>

		<guid isPermaLink="false">http://www.hodge.net.au/sam/blog/?p=45</guid>
		<description><![CDATA[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 * &#160; &#34;&#34;&#34; RiProcedural(data, bound, subdividefunc, freefunc=None) Declare [...]]]></description>
				<content:encoded><![CDATA[<p>Basically I want a big block of RiPoints to shade into, so I made them like this</p>
<p>I used  <a href="http://cgkit.sourceforge.net/" target="_blank">cgKit</a> to make a big block of points, now I just need to see how it performs under stress</p>
<p>Parent Voxel script</p>
<p>voxelParent.py</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/usr/bin/env python</span>
<span style="color: #ff7700;font-weight:bold;">from</span> cgkit.<span style="color: black;">ri</span> <span style="color: #ff7700;font-weight:bold;">import</span> *
&nbsp;
<span style="color: #483d8b;">&quot;&quot;&quot;
RiProcedural(data, bound, subdividefunc, freefunc=None)
    Declare a procedural model.
&nbsp;
    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.
&nbsp;
    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.
&nbsp;
    Example: RiProcedural(&quot;mymodel.rib&quot;, [-1,1,-1,1,-1,1], <span style="color: #000099; font-weight: bold;">\</span>
                          RiProcDelayedReadArchive, RI_NULL)
&nbsp;
             RiProcedural([&quot;python teapot.py&quot;,&quot;&quot;],[0,1,0,1,0,1], <span style="color: #000099; font-weight: bold;">\</span>
                          RiProcRunProgram, RI_NULL)
&nbsp;
             RiProcedural([&quot;teapot.so&quot;,&quot;&quot;],[0,1,0,1,0,1], <span style="color: #000099; font-weight: bold;">\</span>
                          RiProcDynamicLoad, RI_NULL)
&quot;&quot;&quot;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">sys</span>
&nbsp;
args <span style="color: #66cc66;">=</span> <span style="color: #dc143c;">sys</span>.<span style="color: black;">stdin</span>.<span style="color: #dc143c;">readline</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">while</span> args:
	arg <span style="color: #66cc66;">=</span> args.<span style="color: black;">split</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
	size<span style="color: #66cc66;">=</span><span style="color: #008000;">float</span><span style="color: black;">&#40;</span>arg<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
	parts<span style="color: #66cc66;">=</span><span style="color: #008000;">int</span><span style="color: black;">&#40;</span>arg<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
	seed<span style="color: #66cc66;">=</span><span style="color: #008000;">int</span><span style="color: black;">&#40;</span>arg<span style="color: black;">&#91;</span><span style="color: #ff4500;">2</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
	childCount<span style="color: #66cc66;">=</span><span style="color: #008000;">int</span><span style="color: black;">&#40;</span>arg<span style="color: black;">&#91;</span><span style="color: #ff4500;">2</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
	childSeed <span style="color: #66cc66;">=</span> seed
	<span style="color: #ff7700;font-weight:bold;">for</span> xstep <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span>parts<span style="color: black;">&#41;</span>:
		<span style="color: #ff7700;font-weight:bold;">for</span> ystep <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span>parts<span style="color: black;">&#41;</span>:
			<span style="color: #ff7700;font-weight:bold;">for</span> zstep <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span>parts<span style="color: black;">&#41;</span>:
				xmin <span style="color: #66cc66;">=</span> xstep - <span style="color: #ff4500;">0.5</span>*size/parts - size*<span style="color: #ff4500;">0.5</span>
				xmax <span style="color: #66cc66;">=</span> xstep + <span style="color: #ff4500;">0.5</span>*size/parts - size*<span style="color: #ff4500;">0.5</span>
				ymin <span style="color: #66cc66;">=</span> ystep - <span style="color: #ff4500;">0.5</span>*size/parts- size*<span style="color: #ff4500;">0.5</span>
				ymax <span style="color: #66cc66;">=</span> ystep + <span style="color: #ff4500;">0.5</span>*size/parts- size*<span style="color: #ff4500;">0.5</span>
				zmin <span style="color: #66cc66;">=</span> zstep - <span style="color: #ff4500;">0.5</span>*size/parts- size*<span style="color: #ff4500;">0.5</span>
				zmax <span style="color: #66cc66;">=</span> zstep + <span style="color: #ff4500;">0.5</span>*size/parts- size*<span style="color: #ff4500;">0.5</span>
				childSeed+<span style="color: #66cc66;">=</span><span style="color: #ff4500;">1</span>
				<span style="color: #ff7700;font-weight:bold;">print</span> RiProcedural<span style="color: black;">&#40;</span><span style="color: black;">&#91;</span><span style="color: #483d8b;">&quot;python voxelChild.py&quot;</span><span style="color: #66cc66;">,</span><span style="color: #483d8b;">&quot;%s %s %s %s %s %s %s %s&quot;</span> % <span style="color: black;">&#40;</span>xmin<span style="color: #66cc66;">,</span>xmax<span style="color: #66cc66;">,</span>ymin<span style="color: #66cc66;">,</span>ymax<span style="color: #66cc66;">,</span>zmin<span style="color: #66cc66;">,</span>zmax<span style="color: #66cc66;">,</span>childSeed<span style="color: #66cc66;">,</span> childCount<span style="color: black;">&#41;</span><span style="color: black;">&#93;</span><span style="color: #66cc66;">,</span><span style="color: black;">&#91;</span>xmin<span style="color: #66cc66;">,</span>xmax<span style="color: #66cc66;">,</span>ymin<span style="color: #66cc66;">,</span>ymax<span style="color: #66cc66;">,</span>zmin<span style="color: #66cc66;">,</span>zmax<span style="color: black;">&#93;</span><span style="color: #66cc66;">,</span> RiProcRunProgram<span style="color: #66cc66;">,</span> RI_NULL<span style="color: black;">&#41;</span>
	<span style="color: #dc143c;">sys</span>.<span style="color: black;">stdout</span>.<span style="color: black;">write</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'<span style="color: #000099; font-weight: bold;">\3</span>77'</span><span style="color: black;">&#41;</span>
	<span style="color: #dc143c;">sys</span>.<span style="color: black;">stdout</span>.<span style="color: black;">flush</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
	args <span style="color: #66cc66;">=</span> <span style="color: #dc143c;">sys</span>.<span style="color: black;">stdin</span>.<span style="color: #dc143c;">readline</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></pre></td></tr></table></div>

<p>Child Voxel Script</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/usr/bin/env python</span>
<span style="color: #ff7700;font-weight:bold;">from</span> cgkit.<span style="color: black;">ri</span> <span style="color: #ff7700;font-weight:bold;">import</span> *
&nbsp;
<span style="color: #ff7700;font-weight:bold;">from</span> cgkit.<span style="color: black;">cgtypes</span> <span style="color: #ff7700;font-weight:bold;">import</span> *
&nbsp;
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">sys</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">random</span>
args <span style="color: #66cc66;">=</span> <span style="color: #dc143c;">sys</span>.<span style="color: black;">stdin</span>.<span style="color: #dc143c;">readline</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">while</span> args:
	arg <span style="color: #66cc66;">=</span> args.<span style="color: black;">split</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
	xmin<span style="color: #66cc66;">=</span><span style="color: #008000;">float</span><span style="color: black;">&#40;</span>arg<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
	xmax<span style="color: #66cc66;">=</span><span style="color: #008000;">float</span><span style="color: black;">&#40;</span>arg<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
	ymin<span style="color: #66cc66;">=</span><span style="color: #008000;">float</span><span style="color: black;">&#40;</span>arg<span style="color: black;">&#91;</span><span style="color: #ff4500;">2</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
	ymax<span style="color: #66cc66;">=</span><span style="color: #008000;">float</span><span style="color: black;">&#40;</span>arg<span style="color: black;">&#91;</span><span style="color: #ff4500;">3</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
	zmin<span style="color: #66cc66;">=</span><span style="color: #008000;">float</span><span style="color: black;">&#40;</span>arg<span style="color: black;">&#91;</span><span style="color: #ff4500;">4</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
	zmax<span style="color: #66cc66;">=</span><span style="color: #008000;">float</span><span style="color: black;">&#40;</span>arg<span style="color: black;">&#91;</span><span style="color: #ff4500;">5</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
	childSeed<span style="color: #66cc66;">=</span><span style="color: #008000;">int</span><span style="color: black;">&#40;</span>arg<span style="color: black;">&#91;</span><span style="color: #ff4500;">6</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
	childCount <span style="color: #66cc66;">=</span> <span style="color: #008000;">int</span><span style="color: black;">&#40;</span>arg<span style="color: black;">&#91;</span><span style="color: #ff4500;">7</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
	pointList <span style="color: #66cc66;">=</span> <span style="color: black;">&#91;</span><span style="color: black;">&#93;</span>
	pointSize <span style="color: #66cc66;">=</span> vec3<span style="color: black;">&#40;</span>xmax-xmin<span style="color: #66cc66;">,</span>ymax-ymin<span style="color: #66cc66;">,</span>zmax-zmin<span style="color: black;">&#41;</span>.<span style="color: black;">length</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> / <span style="color: #008000;">float</span><span style="color: black;">&#40;</span>childCount<span style="color: black;">&#41;</span>
	<span style="color: #ff7700;font-weight:bold;">for</span> xstep <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span>childCount<span style="color: black;">&#41;</span>:
		childSeed+<span style="color: #66cc66;">=</span><span style="color: #ff4500;">1</span>
		<span style="color: #dc143c;">random</span>.<span style="color: black;">seed</span><span style="color: black;">&#40;</span>childSeed<span style="color: black;">&#41;</span>
		xval <span style="color: #66cc66;">=</span> <span style="color: #dc143c;">random</span>.<span style="color: black;">uniform</span><span style="color: black;">&#40;</span>xmin<span style="color: #66cc66;">,</span>xmax<span style="color: black;">&#41;</span>
		<span style="color: #dc143c;">random</span>.<span style="color: black;">jumpahead</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>
		yval <span style="color: #66cc66;">=</span> <span style="color: #dc143c;">random</span>.<span style="color: black;">uniform</span><span style="color: black;">&#40;</span>ymin<span style="color: #66cc66;">,</span>ymax<span style="color: black;">&#41;</span>
		<span style="color: #dc143c;">random</span>.<span style="color: black;">jumpahead</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>
		zval <span style="color: #66cc66;">=</span> <span style="color: #dc143c;">random</span>.<span style="color: black;">uniform</span><span style="color: black;">&#40;</span>zmin<span style="color: #66cc66;">,</span>zmax<span style="color: black;">&#41;</span>
		<span style="color: #dc143c;">random</span>.<span style="color: black;">jumpahead</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>
		pointVal <span style="color: #66cc66;">=</span> vec3<span style="color: black;">&#40;</span>xval<span style="color: #66cc66;">,</span>yval<span style="color: #66cc66;">,</span>zval<span style="color: black;">&#41;</span>
		pointList.<span style="color: black;">append</span><span style="color: black;">&#40;</span>pointVal<span style="color: black;">&#41;</span>
	<span style="color: #ff7700;font-weight:bold;">print</span> RiPoints<span style="color: black;">&#40;</span>P<span style="color: #66cc66;">=</span>pointList<span style="color: #66cc66;">,</span>constantwidth<span style="color: #66cc66;">=</span><span style="color: black;">&#91;</span>pointSize<span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
	<span style="color: #dc143c;">sys</span>.<span style="color: black;">stdout</span>.<span style="color: black;">write</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'<span style="color: #000099; font-weight: bold;">\3</span>77'</span><span style="color: black;">&#41;</span>
	<span style="color: #dc143c;">sys</span>.<span style="color: black;">stdout</span>.<span style="color: black;">flush</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
	args <span style="color: #66cc66;">=</span> <span style="color: #dc143c;">sys</span>.<span style="color: black;">stdin</span>.<span style="color: #dc143c;">readline</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></pre></td></tr></table></div>

<p>Just add brick map or ptc based 3d look up shader and rejoice!</p>
<p>I still have an outstanding testing of seeing if it acutally produces geometry and see if it looks good, but they are small details <img src='http://www.hodge.net.au/sam/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.hodge.net.au/sam/blog/2009/01/12/voxel-madness/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
