<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-9100018</id><updated>2011-11-16T00:47:42.694-08:00</updated><title type='text'>croquet notes</title><subtitle type='html'>A journal of stuff i'm doing with Croquet.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://orionelenzil.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://orionelenzil.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>orion</name><uri>http://www.blogger.com/profile/13279965738021257236</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://elenzil.com/orion/photos/20040708/thumbs/tn_124_2472.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>47</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9100018.post-112835899138478094</id><published>2005-10-03T09:59:00.000-07:00</published><updated>2005-10-03T10:03:11.420-07:00</updated><title type='text'>Fond Adieu.</title><content type='html'>&lt;font face= arial&gt;&lt;br /&gt;I think this is probably the last post for this blog.&lt;br /&gt;&lt;br /&gt;I've taken a new position as a physics research assistant at the south pole of the earth, where i'll be from about mid-october 2005 thru november, 2006.&lt;br /&gt;There's more info (and a blog) here: &lt;a href="http://www.elenzil.com/ohpolar"&gt;http://www.elenzil.com/ohpolar&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;It's been a pleasure working with the Croquet community, and i hope to stay in touch. I'll definitely continue following the Croquet scene from down there, but i doubt i'll have time to do much more than dabble.&lt;br /&gt;&lt;br /&gt;best,&lt;br /&gt;Orion&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9100018-112835899138478094?l=orionelenzil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orionelenzil.blogspot.com/feeds/112835899138478094/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9100018&amp;postID=112835899138478094' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/112835899138478094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/112835899138478094'/><link rel='alternate' type='text/html' href='http://orionelenzil.blogspot.com/2005/10/fond-adieu.html' title='Fond Adieu.'/><author><name>orion</name><uri>http://www.blogger.com/profile/13279965738021257236</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://elenzil.com/orion/photos/20040708/thumbs/tn_124_2472.jpg'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9100018.post-112613819345440970</id><published>2005-09-07T16:12:00.000-07:00</published><updated>2005-09-07T17:09:53.506-07:00</updated><title type='text'>Using Shorts for spacial Coordinates</title><content type='html'>The teleimmersion project generates huge point-cloud datasets,&lt;br /&gt;with approximately 100,000 points per frame, each point having XYZ and RGB data.&lt;br /&gt;&lt;br /&gt;In the interest of increasing the performance of (future) streaming of this data from the source machines into a target machine running croquet, i've been working on simply reducing the precision of the data.&lt;br /&gt;&lt;br /&gt;I assume a maximum streaming thruput of 18MB per second, based on tests streaming within my own computer.&lt;br /&gt;&lt;br /&gt;Originally, XYZ and RGB were each represented as triples of four-byte floats.&lt;br /&gt;So, 3 * 4 + 3 * 4 = 24 bytes per point * 100,000 = 2.4MB per frame -&gt; up to  7.5Hz.&lt;br /&gt;&lt;br /&gt;RGB is an obvious target, since rendering cards at their base level can only handle colors with single-byte components.&lt;br /&gt;&lt;br /&gt;So i made an option to represent the RGB values as triples of single-byte components.&lt;br /&gt;So, 3 * 4 + 3 * 1 = 15 bytes per point * 100,000 = 1.5MB per frame -&gt; up to 12.0Hz&lt;br /&gt;&lt;br /&gt;I'm nearly finished with an option to represent the XYZ values as triples of two-byte signed shorts.&lt;br /&gt;So, 3 * 2 + 3 * 1 =  9 bytes per point * 100,000 = 0.9MB per frame -&gt; up to 20.0Hz&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here is a screenshot showing three different types of representations.&lt;br /&gt;Random-point placement aside, they look pretty much identical.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.citris-uc.org/hosted/projects/ith/screenshots/shortxyz/shortxyz1.png"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Implementation Issues&lt;br /&gt;---------------------&lt;br /&gt;&lt;br /&gt;Changing to single-byte color components was relatively straight-forward.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Changing to two-byte spacial components&lt;/b&gt; has been a bit trickier.&lt;br /&gt;OpenGL is perfectly happy being passed GLShorts for spacial data;&lt;br /&gt;the card must be converting them to floats before running them thru the graphics pipeline. I haven't yet tested for performance issues here, but i don't expect any.&lt;br /&gt;More complicated however is that Croquet of course works with B3DVector3, which is based on B3DFloatArray,which is based on FloatArray, which is of course, Floats.&lt;br /&gt;Furthermore, Squeak doesn't even have a ShortArray!&lt;br /&gt;What Squeak does have is ByteArray, which has convenience methods for accessing pairs of elements as shorts. (and longs, if you're in to that sort of thing)&lt;br /&gt;So the data can be accessed for purposes such as finding bounding boxes and doing calculations.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Dealing with Scaling&lt;/b&gt; is so far definitely the trickiest issue.&lt;br /&gt;Croquet does not use the usual scale feature of transformation matrices; rather it requires the actual vertices to be actually changed. David Smith once explained to me that this is to enable/simplify picking thru portals, if i recall correctly. In any event, i felt that reimplementing scale as a per-point conversion, multiplication, and unconversion would be prohibitively slow. So i'm trying out just putting scale right in the matrix.  The sphere on the far right has been scaled this way.  So far it's working well altho there must be some remaining issues with bounding box, as a TEditBox no longer works with the byte-spatial-components pointclouds. I'm about to look at this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9100018-112613819345440970?l=orionelenzil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orionelenzil.blogspot.com/feeds/112613819345440970/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9100018&amp;postID=112613819345440970' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/112613819345440970'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/112613819345440970'/><link rel='alternate' type='text/html' href='http://orionelenzil.blogspot.com/2005/09/using-shorts-for-spacial-coordinates.html' title='Using Shorts for spacial Coordinates'/><author><name>orion</name><uri>http://www.blogger.com/profile/13279965738021257236</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://elenzil.com/orion/photos/20040708/thumbs/tn_124_2472.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9100018.post-112535539739389641</id><published>2005-08-29T15:35:00.000-07:00</published><updated>2005-08-29T15:50:06.436-07:00</updated><title type='text'>Cloth again</title><content type='html'>(related to &lt;a href="http://orionelenzil.blogspot.com/2005/08/vernet-cloth.html"&gt;this&lt;/a&gt; previous post)&lt;br /&gt;&lt;br /&gt;I couldn't stay away from the cloth,&lt;br /&gt;so i've put together a change set which includes a decent demo.&lt;br /&gt;&lt;br /&gt;I added collision with spheres,&lt;br /&gt;and in addition added something which altho i'm sure it's been done, i've never seen, which is: not only does cloth make way for the sphere, it also pushes the sphere around. I've only ever seen fairly static objects which the cloth humbly obeys, but it's simple enough to additionally have the cloth push the sphere.&lt;br /&gt;&lt;br /&gt;The changeset files-in to a stock Croquet0.3 image, and is located here:&lt;br /&gt;&lt;a href="http://www.citris-uc.org/hosted/projects/ith/cloth/ClothOxe.5.cs"&gt;http://www.citris-uc.org/hosted/projects/ith/cloth/ClothOxe.5.cs&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The changeset includes a pop-up menu with different preset situations.&lt;br /&gt;The presets run fairly fast (20 or 30Hz or so) on my 3.2GHz windows machine,&lt;br /&gt;&lt;b&gt;with the major caveat&lt;/b&gt; that performance seriously degrades over time. I'm not sure why this is. I think it may have something to do with squeak garbage collection.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.citris-uc.org/hosted/projects/ith/cloth/clothoxe1.jpg"&gt;&lt;br /&gt;Pretty close to some initial conditions. It's billowing up because of 'wind'.&lt;br /&gt;The cloth is anchored along its four edges.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.citris-uc.org/hosted/projects/ith/cloth/clothoxe2.jpg"&gt;&lt;br /&gt;A bit more billowing.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.citris-uc.org/hosted/projects/ith/cloth/clothoxe3.jpg"&gt;&lt;br /&gt;Holding a sphere. The sphere rolls around fairly nicely.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.citris-uc.org/hosted/projects/ith/cloth/clothoxe4.jpg"&gt;&lt;br /&gt;One of 8 exciting preset scenes: A sphere bowling into a cloth which is anchored only along the top edge.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9100018-112535539739389641?l=orionelenzil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orionelenzil.blogspot.com/feeds/112535539739389641/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9100018&amp;postID=112535539739389641' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/112535539739389641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/112535539739389641'/><link rel='alternate' type='text/html' href='http://orionelenzil.blogspot.com/2005/08/cloth-again.html' title='Cloth again'/><author><name>orion</name><uri>http://www.blogger.com/profile/13279965738021257236</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://elenzil.com/orion/photos/20040708/thumbs/tn_124_2472.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9100018.post-112449350990084462</id><published>2005-08-19T15:49:00.000-07:00</published><updated>2005-08-29T15:56:30.083-07:00</updated><title type='text'>Byte Color Components versus Floats</title><content type='html'>The tele-immersion data sets are point-clouds where each point has XYZ and RGB information. Previously, each of component of XYZ and RGB have been floats.&lt;br /&gt;However, since colors are eventually converted to 8-bit components, RGB could be 3*8 bits instead of 3*32 bits.&lt;br /&gt;&lt;br /&gt;Below is a comparison of tele-immersion data with 7-bit* color components versus 32-bit floats. Basically it looks fine. The 7-bit file is 2,004,809 bytes, and the float file is 3,207,668 bytes, so the ration is about 5/8!&lt;br /&gt;&lt;br /&gt;Future directions:&lt;br /&gt;I'd assumed that OpenGL required float data for XYZ information,&lt;br /&gt;but i just checked and GLVertex3s is a call for specifiying XYZ with 'GLShort' components, which i presume are 16-bit. If we're able to get that to work, the data would go from 64 bits per point to only 24 bPP, or a ratio of 3/8.&lt;br /&gt;&lt;br /&gt;Current streaming speeds indicate a theoretical maximum frame rate of about 6Hz with 64bPP, so that maximum could go up to about 16Hz, which is much more appealing.&lt;br /&gt;&lt;br /&gt;On the resolution of 16-bit spacial information:&lt;br /&gt;16 bits has a resolution of one part in 65,000.&lt;br /&gt;The tele-immersion "playpen" is approximately 10 feet in each dimension, which translates to a 16-bit resolution of about .002 inches, or about .05 millimeters, which is pretty good.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.citris-uc.org/hosted/projects/ith/screenshots/bytecolors/7bitfloatcomparison.png"&gt;&lt;br /&gt;&lt;br /&gt;* For some reason, OpenGL via Croquet interprets byte color components as being in the range 0-127, not 0-255. Values over 127 are clamped to zero. See &lt;a href="http://bugs.impara.de/view.php?id=1684"&gt;http://bugs.impara.de/view.php?id=1684&lt;/a&gt;.&lt;br /&gt;edit: Bert Freudenberg has clued me in that GLBYTE is a signed value; i want GLUNSIGNEDBYTE or equivelant. Thanks Bert !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9100018-112449350990084462?l=orionelenzil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orionelenzil.blogspot.com/feeds/112449350990084462/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9100018&amp;postID=112449350990084462' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/112449350990084462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/112449350990084462'/><link rel='alternate' type='text/html' href='http://orionelenzil.blogspot.com/2005/08/byte-color-components-versus-floats.html' title='Byte Color Components versus Floats'/><author><name>orion</name><uri>http://www.blogger.com/profile/13279965738021257236</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://elenzil.com/orion/photos/20040708/thumbs/tn_124_2472.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9100018.post-112430153284912063</id><published>2005-08-17T10:42:00.000-07:00</published><updated>2005-08-17T10:58:52.856-07:00</updated><title type='text'>Vernet Cloth</title><content type='html'>Dave Faught pointed me to Thomas Jakobsen's article "&lt;a href="http://www.gpgstudy.com/gpgiki/GDC%202001%3A%20Advanced%20Character%20Physics"&gt;Advanced Character Physics&lt;/a&gt;", which was used by the guy who made the&lt;a href="http://www.pekkasandborg.com/portfolio/?id=2"&gt; Falling Woman demo&lt;/a&gt;.&lt;br /&gt;Jakobsen writes about particle systems, a subject dear to my heart, and interestingly advocates using Vernet Integration rather than Euler. I've traditionally just gone with Euler because it's straight-forward.&lt;br /&gt;&lt;br /&gt;Review:&lt;br /&gt;&lt;br /&gt;In Euler,&lt;br /&gt;the basic per-frame per-particle process is something like:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;position'     = position + velocity * dt.&lt;br /&gt;velocity'     = velocity + acceleration * dt.&lt;br /&gt;acceleration' = whatever.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;With Verner,&lt;br /&gt;instead of storing velocity, you store the previous position. And thus:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;position'     = position - positionOld + acceleration * dt^2.&lt;br /&gt;positionOld   = position.&lt;br /&gt;acceleration' = whatever.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;- I have to confess i don't understand the derivation of that core line,&lt;br /&gt;but it seems to work.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Jakobsen also gives a nice approximation for square root.&lt;br /&gt;&lt;br /&gt;So i thought i'd try out implementing the Cloth simulation outlined in Jakobsen's paper. Basically it's a triangular mesh with every edge a spring. Velocity of the nodes is not stored, but the previous position is.&lt;br /&gt;&lt;br /&gt;A very heavy part of the computation is calculating normals.&lt;br /&gt;For every node, i pre-compute a list of 2 pairs of other nodes (4 nodes total) which represent vectors to be cross-producted with each other. Essentially, for most nodes in the mesh, the node is the center of a hexagon and i calculate the normal as the cross-product of two of the hexagon's three obvious bisectors. The edges are special cases and work allright but not great, and i ignored the four corners.&lt;br /&gt;To speed up normal computation, i also only calculate every Nth normal per frame. When N is 3 or 4, this is a significant speedup.&lt;br /&gt;&lt;br /&gt;The simulation runs fairly well on my 3Ghz PC with about 25x25 nodes. Fairly well = about 20Hz or so.&lt;br /&gt;&lt;br /&gt;Here are the &lt;a href="http://www.citris-uc.org/hosted/projects/ith/gallery/downloads/ClothOxe1.zip"&gt;change sets for the classes&lt;/a&gt;, and here is &lt;a href="http://www.citris-uc.org/hosted/projects/ith/gallery/downloads/ClothOxe1_image.zip"&gt;an image file&lt;/a&gt; if you're in a hurry.&lt;br /&gt;&lt;br /&gt;Screenshots:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.citris-uc.org/hosted/projects/ith/screenshots/cloth/cloth1.png"&gt;&lt;br&gt;&lt;br&gt;&lt;br /&gt;&lt;img src="http://www.citris-uc.org/hosted/projects/ith/screenshots/cloth/cloth2.png"&gt;&lt;br&gt;&lt;br&gt;&lt;br /&gt;&lt;img src="http://www.citris-uc.org/hosted/projects/ith/screenshots/cloth/cloth3.png"&gt;&lt;br&gt;&lt;br&gt;&lt;br /&gt;&lt;img src="http://www.citris-uc.org/hosted/projects/ith/screenshots/cloth/cloth4.png"&gt;&lt;br&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9100018-112430153284912063?l=orionelenzil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orionelenzil.blogspot.com/feeds/112430153284912063/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9100018&amp;postID=112430153284912063' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/112430153284912063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/112430153284912063'/><link rel='alternate' type='text/html' href='http://orionelenzil.blogspot.com/2005/08/vernet-cloth.html' title='Vernet Cloth'/><author><name>orion</name><uri>http://www.blogger.com/profile/13279965738021257236</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://elenzil.com/orion/photos/20040708/thumbs/tn_124_2472.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9100018.post-112302652826696177</id><published>2005-08-02T16:45:00.000-07:00</published><updated>2005-08-02T16:48:48.266-07:00</updated><title type='text'>CInputFieldWithReset</title><content type='html'>I seem to be writing small Tweak classes lately.&lt;br /&gt;&lt;br /&gt;This afternoon added "CInputFieldWithReset" to allow users to easily reset the values in the primitive properties editor dialog.&lt;br /&gt;&lt;br /&gt;This object is available here: &lt;a href="http://bugs.impara.de/view.php?id=1598"&gt;http://bugs.impara.de/view.php?id=1598&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9100018-112302652826696177?l=orionelenzil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orionelenzil.blogspot.com/feeds/112302652826696177/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9100018&amp;postID=112302652826696177' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/112302652826696177'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/112302652826696177'/><link rel='alternate' type='text/html' href='http://orionelenzil.blogspot.com/2005/08/cinputfieldwithreset.html' title='CInputFieldWithReset'/><author><name>orion</name><uri>http://www.blogger.com/profile/13279965738021257236</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://elenzil.com/orion/photos/20040708/thumbs/tn_124_2472.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9100018.post-112258766184991107</id><published>2005-07-28T14:45:00.000-07:00</published><updated>2005-07-28T17:01:21.706-07:00</updated><title type='text'>Input Validation</title><content type='html'>This is kinda neat.&lt;br /&gt;&lt;br /&gt;With the new Properties editor for primitives,&lt;br /&gt;there's a number of input fields which need to have the user's input validated before being used.&lt;br /&gt;&lt;br /&gt;For example, maybe the user types in a word where a number is wanted,&lt;br /&gt;or enters a value outside of the allowed range,&lt;br /&gt;(or, because i thought it might come in handy, the user types in 0 when 0 in particular is disallowed).&lt;br /&gt;&lt;br /&gt;Validation becomes somewhat trickier when the fields affect the scene immediately - that is, as soon as the user hits a key, it's reflected in the scene. In this situation, you absolutely need validation.&lt;br /&gt;&lt;br /&gt;For example, in the case of TSphere segments, the minimum value is 2 (altho i'm using 3).&lt;br /&gt;A natural and frequent user interaction will be to delete the value currently in the field and then type in a new value. After deletion but before typing, the value of the field is invalid, and so must be handled.&lt;br /&gt;&lt;br /&gt;I subclassed CNumberConverter and added members for min, max, zero disallowment, as well as a pointer (?) back to the CInputField itself, and some helper variables.&lt;br /&gt;When the input goes invalid, the CInputField background is changed to lightRed (the man's pink!) and the last valid value is reported. The text content of the input field is left unchanged, however, because changing would interfere with the user's typing.&lt;br /&gt;When the input goes valid, the background color is changed to the CInputField's container's background color, and the current value is stored as the last valid value.&lt;br /&gt;&lt;br /&gt;Basically, it works fairly nicely.&lt;br /&gt;&lt;br /&gt;The file-outs of the new classes are &lt;a href="http://www.citris-uc.org/hosted/projects/ith/gallery/downloads/CNumberConverterOxe_20050728.zip"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.citris-uc.org/hosted/projects/ith/screenshots/inputfields/validatedfields.png"&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9100018-112258766184991107?l=orionelenzil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orionelenzil.blogspot.com/feeds/112258766184991107/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9100018&amp;postID=112258766184991107' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/112258766184991107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/112258766184991107'/><link rel='alternate' type='text/html' href='http://orionelenzil.blogspot.com/2005/07/input-validation.html' title='Input Validation'/><author><name>orion</name><uri>http://www.blogger.com/profile/13279965738021257236</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://elenzil.com/orion/photos/20040708/thumbs/tn_124_2472.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9100018.post-112250677662411795</id><published>2005-07-27T16:25:00.000-07:00</published><updated>2005-07-27T16:26:16.630-07:00</updated><title type='text'>Go Here, Primitive Properties, SkyBox</title><content type='html'>There's a new partial release up at:&lt;br /&gt;&lt;a class="moz-txt-link-freetext" href="http://www.citris-uc.org/hosted/projects/ith/gallery/downloads.html"&gt;http://www.citris-uc.org/hosted/projects/ith/gallery/downloads.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;- Added a pop-up dialog for Primitives allowing you to&lt;br /&gt;manually edit their position, size, and other properties.&lt;br /&gt;This seems to work with save &amp; load,&lt;br /&gt;but i'm a bit nervous about it,&lt;br /&gt;especially the extent of cubes and squares.&lt;br /&gt;(well, formerly cubes and squares ;)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;- Added 'go here' item in the pop-up menu for most items,&lt;br /&gt;  under options.&lt;br /&gt;&lt;br /&gt;- Fixed skybox problems, added 'none' as an option.&lt;br /&gt;  (Still need a 'background color' option tho!)&lt;br /&gt;&lt;br /&gt;- various other small changes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9100018-112250677662411795?l=orionelenzil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orionelenzil.blogspot.com/feeds/112250677662411795/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9100018&amp;postID=112250677662411795' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/112250677662411795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/112250677662411795'/><link rel='alternate' type='text/html' href='http://orionelenzil.blogspot.com/2005/07/go-here-primitive-properties-skybox.html' title='Go Here, Primitive Properties, SkyBox'/><author><name>orion</name><uri>http://www.blogger.com/profile/13279965738021257236</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://elenzil.com/orion/photos/20040708/thumbs/tn_124_2472.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9100018.post-112232856154328189</id><published>2005-07-25T14:12:00.000-07:00</published><updated>2005-07-25T14:56:01.553-07:00</updated><title type='text'>Primitive Editor</title><content type='html'>Ed Boyce is interested in using the Gallery software to present solar system simulations. (Is "solar" Sol-centeric ?  ie, is there only one solar system in the universe, one solar wind, etc ? or does Alpha Centauri or Sirius produce a solar wind as well ?) To that end, a couple new features are in the worls:&lt;br /&gt;&lt;br /&gt;* numerical positioning of objects.&lt;br /&gt;  - for starters a simple dialog which lets you edit the properties of a primitive.&lt;br /&gt;i've been wanting to make one of those for a while. It's a relatively generic dialog with fields for position, radius, inner radius, top radius, base radius, segments, wedges, etc, in essence all the potential fields a primitive may support. The fields are only shown if the passed-in primitive supports the methods to set/get those fields. ie via "aTPrimitive class includesSelector: someSelector".&lt;br /&gt;It's a bit clunky, definitely, but works so far.&lt;br /&gt;  - I'm not sure if i want to include Texture, Spin, etc in here.&lt;br /&gt;  - for seconds, we may work out a table format to input the data, altho this seems to be straying a bit from a general gallery app to me.&lt;br /&gt;&lt;br /&gt;* "Go To" feature.&lt;br /&gt;  - added a menu item to all objects which reads "Go Here" and simply zooms the camera/avatar up to the object.  The behaviour is similar to that of TWindow, but somewhat different in that it doesn't pay attention to the 'front' face of the object. With TWindow, the viewer always ends up aligned facing the front of the object, which is as it should be. However that's a bit unintuitive when you just see some object in the distance and want to go to it.  With "Go here" it's as if you simply walked (quickly) over to the object.&lt;br /&gt;  - I would like to add a pop-up window listing all the objects (of interest) in the scene and allowing you to select, edit, and of course, go to them.&lt;br /&gt;&lt;br /&gt;* Providing hooks to ODE for physics&lt;br /&gt;&lt;br /&gt;* Ed would like to see 128-bit numbers instead of 32-bit.&lt;br /&gt;  - I think this is somewhat out of the scope of the Gallery project and more in the purview of Croquet or Squeak itself. itselves. themself.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9100018-112232856154328189?l=orionelenzil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orionelenzil.blogspot.com/feeds/112232856154328189/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9100018&amp;postID=112232856154328189' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/112232856154328189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/112232856154328189'/><link rel='alternate' type='text/html' href='http://orionelenzil.blogspot.com/2005/07/primitive-editor.html' title='Primitive Editor'/><author><name>orion</name><uri>http://www.blogger.com/profile/13279965738021257236</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://elenzil.com/orion/photos/20040708/thumbs/tn_124_2472.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9100018.post-112198848565141564</id><published>2005-07-21T16:22:00.000-07:00</published><updated>2005-07-21T16:28:05.656-07:00</updated><title type='text'>New features, Release, Installer</title><content type='html'>Have finally rolled Croquet into a Nullsoft installer package,&lt;br /&gt;which works great of Windows users.  Have continued to release .zip files&lt;br /&gt;for cross-platform users.&lt;br /&gt;&lt;br /&gt;New release out:&lt;br /&gt;&lt;a href="http://www.citris-uc.org/hosted/projects/ith/gallery/downloads.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;It notably includes two new sample galleries which are content-lite &amp; -heavy, and a demo of the animated pointcloud tele-immersion stuff.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Just added ability to zoom-to an object, similar to TWindow's (but without facing you "in front" of the object, just close to the object.) it works nicely.  Thanks to Ed Boyce for lighting a fire under that one.&lt;br /&gt;&lt;br /&gt;Also added ability to put Markers on TPrimitives. This was also thanks to Ed, who is using the Sphere primitives to model a solar system, and i realized that one might want to annotate a planet.&lt;br /&gt;&lt;br /&gt;Animated point clouds have been added with pre-calculated geometrical summaries. Am beginning work on networking to dynamically pull in tele-immersion data.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Am at work now on an input dialog for Primitives,&lt;br /&gt;to allow numerical placement.  - Will probably generalize that for TGalleryBase objects.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9100018-112198848565141564?l=orionelenzil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orionelenzil.blogspot.com/feeds/112198848565141564/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9100018&amp;postID=112198848565141564' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/112198848565141564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/112198848565141564'/><link rel='alternate' type='text/html' href='http://orionelenzil.blogspot.com/2005/07/new-features-release-installer.html' title='New features, Release, Installer'/><author><name>orion</name><uri>http://www.blogger.com/profile/13279965738021257236</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://elenzil.com/orion/photos/20040708/thumbs/tn_124_2472.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9100018.post-111956885916201951</id><published>2005-06-23T16:12:00.000-07:00</published><updated>2005-06-23T16:20:59.166-07:00</updated><title type='text'>Humanoid PointClouds</title><content type='html'>Towards bringing together the gallery project and CITRIS's &lt;a href="http://www.eecs.berkeley.edu/%7Esangj/teleim/"&gt;tele-immersion lab&lt;/a&gt;, we've taken some data from Sang-Hack Jung and imported it into croquet.&lt;br /&gt;&lt;br /&gt;The data is simply lots and lots of points with XYZ &amp;amp; RGB info.&lt;br /&gt;Each frame is approximate 150,000 points, with a framerate of about 12Hz.&lt;br /&gt;&lt;br /&gt;Below are preliminary results showing simply getting some of the data in to Croquet.&lt;br /&gt;Next steps are reading in approximately 50 frames from 50 files,&lt;br /&gt;followed hopefully by networking.&lt;br /&gt;&lt;br /&gt;Qualitative observations:&lt;br /&gt;The data reads in from disk nigh instantly via AsyncFile, straight into a B3DVector3Array.&lt;br /&gt;Additionally it scales quite fast, which surprised me because the actual points are scaled rather than having the scale in the matrix.&lt;br /&gt;Very slow however is computing the bounding sphere/box of the cloud.&lt;br /&gt;I'll probably pre-calculate this and include it in the data files.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.citris-uc.org/hosted/projects/ith/screenshots/2pointclouds.png"&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9100018-111956885916201951?l=orionelenzil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orionelenzil.blogspot.com/feeds/111956885916201951/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9100018&amp;postID=111956885916201951' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/111956885916201951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/111956885916201951'/><link rel='alternate' type='text/html' href='http://orionelenzil.blogspot.com/2005/06/humanoid-pointclouds.html' title='Humanoid PointClouds'/><author><name>orion</name><uri>http://www.blogger.com/profile/13279965738021257236</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://elenzil.com/orion/photos/20040708/thumbs/tn_124_2472.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9100018.post-111886418751744327</id><published>2005-06-15T11:53:00.000-07:00</published><updated>2005-06-15T13:24:00.840-07:00</updated><title type='text'>mmm donuts</title><content type='html'>&lt;span style="font-family:arial;"&gt;As a quick aside in the pursuit of point-clouds,&lt;br /&gt;i generated some point clouds which are points 'near' the surface of a torroid.&lt;br /&gt;The nifty part is that the points are evenly distributed on the donut surface.&lt;br /&gt;That is, if you were standing on the donut, you'd perceive the average point density around you to be pretty much constant no matter where you were standing.&lt;br /&gt;&lt;br /&gt;This is actually non-trivial.&lt;br /&gt;Consider the traditional simple mapping of wrapping a rectangle around a donut via theta = x , phi = y. This mapping contracts the map on the inner wall of the donut and expands it on the outter.&lt;br /&gt;&lt;br /&gt;Similarly with a sphere, theta = x, phi = y contracts at the poles.&lt;br /&gt;For a sphere this turns out to have a simple analytical solution which i think is just theta = x, phi = sqrt(y). (I explore this mapping &lt;a href="http://elenzil.com/orion/progs/randompoints/index.html"&gt;here&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;However such an analytical mapping of a rectangle onto a donut turns out to be much more complex. &lt;a href="http://www.sciencenews.org/"&gt;Science News&lt;/a&gt; had an article in 2003 or 2004 which talked about a recent solution, but i can't find it.&lt;br /&gt;&lt;br /&gt;For evenly distributing Random points however,&lt;br /&gt;there's a fairly simple if brutish approach:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;choose a random point inside the rectilinear volume which contains the torus.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;if the point is within some threshhold of the torus surface keep it.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;optional: project the point onto the torus surface. (this actually introduces a bit of non-even distribution, but it allows you to relax the threshhold quite a bit)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;repeat until you have as many points as you want.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;Torroid with 100,000 points evenly distributed within 0.01 units of its surface, not projected:&lt;br /&gt;&lt;a href="http://www.citris-uc.org/hosted/projects/ith/screenshots/torroid/eventorroid1.png"&gt;&lt;img src="http://www.citris-uc.org/hosted/projects/ith/screenshots/torroid/eventorroid1.png" width="48%" /&gt;&lt;/a&gt;&lt;a href="http://www.citris-uc.org/hosted/projects/ith/screenshots/torroid/eventorroid2.png"&gt;&lt;img src="http://www.citris-uc.org/hosted/projects/ith/screenshots/torroid/eventorroid2.png" width="48%" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Comparison of filtered and non-filtered projected points:&lt;br /&gt;&lt;a href="http://www.citris-uc.org/hosted/projects/ith/screenshots/torroid/torroidcomparison2.png"&gt;&lt;img src="http://www.citris-uc.org/hosted/projects/ith/screenshots/torroid/torroidcomparison2.png" width="48%" /&gt;&lt;/a&gt;&lt;a href="http://www.citris-uc.org/hosted/projects/ith/screenshots/torroid/torroidcomparison1.png"&gt;&lt;img src="http://www.citris-uc.org/hosted/projects/ith/screenshots/torroid/torroidcomparison1.png" width="48%" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;.. honestly, it barely makes a visual difference, but it's nice to see anyhow.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Actually, after doing some more comparisons with donuts of different shapes,&lt;br /&gt;i've come to the conclusion that the whole threshholding thing is pretty much unnecessary if you project the points onto the donut surface.&lt;br /&gt;&lt;br /&gt;Funnily, projecting a point onto the surface of a donut is suprisingly simple and doesn't involve and trig.&lt;br /&gt;Just project the point in question onto the circle which is the core of the donut and then project onto the surface.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9100018-111886418751744327?l=orionelenzil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orionelenzil.blogspot.com/feeds/111886418751744327/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9100018&amp;postID=111886418751744327' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/111886418751744327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/111886418751744327'/><link rel='alternate' type='text/html' href='http://orionelenzil.blogspot.com/2005/06/mmm-donuts.html' title='mmm donuts'/><author><name>orion</name><uri>http://www.blogger.com/profile/13279965738021257236</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://elenzil.com/orion/photos/20040708/thumbs/tn_124_2472.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9100018.post-111879170249069696</id><published>2005-06-14T16:22:00.000-07:00</published><updated>2005-06-14T16:33:07.510-07:00</updated><title type='text'>one megapixel</title><content type='html'>&lt;span style="font-family:arial;"&gt;We're looking at combining (live) tele-immersion data with the croquet gallery project.&lt;br /&gt;&lt;br /&gt;The tele-immersion data comes in the form of a huge point cloud: xyz, rgb per point,&lt;br /&gt;with millions of points. (~ 640x480x20 or so per frame at about 10Hz.)&lt;br /&gt;&lt;br /&gt;I did some initial tests to see if there's even a remotre feasability and discovered some interesting things:&lt;br /&gt;&lt;br /&gt;1. you can send at least a million points straight to openGL in an array.&lt;br /&gt;2. openGL can render at least a million point at slow but interactive rates, say 13Hz.&lt;br /&gt;3. openGL rendered big points faster than small points!&lt;br /&gt;   - with pointsize at 1, i got 9Hz, with pointsize at 15, i got 13Hz, very consistently.&lt;br /&gt;  Weird!&lt;br /&gt;&lt;br /&gt;some screenshots.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.citris-uc.org/hosted/projects/ith/screenshots/onemegapixel/megapixel1.png"&gt;&lt;img src="http://www.citris-uc.org/hosted/projects/ith/screenshots/onemegapixel/megapixel1.png" width="48%" /&gt;&lt;/a&gt;&lt;a href="http://www.citris-uc.org/hosted/projects/ith/screenshots/onemegapixel/megapixel2.png"&gt;&lt;img src="http://www.citris-uc.org/hosted/projects/ith/screenshots/onemegapixel/megapixel2.png" width="48%" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9100018-111879170249069696?l=orionelenzil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orionelenzil.blogspot.com/feeds/111879170249069696/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9100018&amp;postID=111879170249069696' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/111879170249069696'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/111879170249069696'/><link rel='alternate' type='text/html' href='http://orionelenzil.blogspot.com/2005/06/one-megapixel.html' title='one megapixel'/><author><name>orion</name><uri>http://www.blogger.com/profile/13279965738021257236</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://elenzil.com/orion/photos/20040708/thumbs/tn_124_2472.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9100018.post-111827574822974323</id><published>2005-06-08T17:08:00.000-07:00</published><updated>2005-06-08T17:09:26.793-07:00</updated><title type='text'>Heirarchy between gallery objects</title><content type='html'>&lt;span style="font-family:arial;"&gt;you asked for it and now you almost get it!&lt;br /&gt;&lt;br /&gt;There's a new image/changes file here:&lt;br /&gt;&lt;a href="http://www.citris-uc.org/hosted/projects/ith/gallery/downloads.html"&gt;http://www.citris-uc.org/hosted/projects/ith/gallery/downloads.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Primitives and VRML objects now have a new menu called 'heirarchy'&lt;br /&gt;which lets you make one object a child of another.&lt;br /&gt;&lt;br /&gt;This way you can group things together,&lt;br /&gt;like a vase on a table,&lt;br /&gt;and work with them conveniently.&lt;br /&gt;&lt;br /&gt;How to do it:&lt;br /&gt;&lt;br /&gt;this is admittedly real clumsy for now but:&lt;br /&gt;1. find the object you want to be the parent.&lt;br /&gt;2. heirarchy | select&lt;br /&gt;3. find the object you want to be the child&lt;br /&gt;4. heirarchy | make child of &lt;something&gt;&lt;br /&gt;&lt;br /&gt;there's also "make me a child of nobody",&lt;br /&gt;orphanize children (makes them children of their grandparents).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;it seems to work with saving and loading of .ctrgal files,&lt;br /&gt;but that could use some testing..&lt;br /&gt;&lt;br /&gt;&lt;/something&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9100018-111827574822974323?l=orionelenzil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orionelenzil.blogspot.com/feeds/111827574822974323/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9100018&amp;postID=111827574822974323' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/111827574822974323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/111827574822974323'/><link rel='alternate' type='text/html' href='http://orionelenzil.blogspot.com/2005/06/heirarchy-between-gallery-objects.html' title='Heirarchy between gallery objects'/><author><name>orion</name><uri>http://www.blogger.com/profile/13279965738021257236</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://elenzil.com/orion/photos/20040708/thumbs/tn_124_2472.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9100018.post-111825874953928425</id><published>2005-06-08T12:24:00.000-07:00</published><updated>2005-06-08T12:28:02.333-07:00</updated><title type='text'>Small new release - Good Stuff</title><content type='html'>There's an image/changes-only release up at &lt;a href="http://www.citris-uc.org/hosted/projects/ith/gallery/downloads.html"&gt;http://www.citris-uc.org/hosted/projects/ith/gallery/downloads.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Most notably there was an old bug around which was causing a dump to the log file at least every frame in some situations, which pretty severely impacted performance, to say nothing of filling up the harddrive !  Folks should download this version just for this.&lt;br /&gt;&lt;br /&gt;Also included are the heads-up navigation keys described in the previous blog post,&lt;br /&gt;which are really pretty nice,&lt;br /&gt;&lt;br /&gt;and some other improvements:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Citris Gallery 2.8.2&lt;/b&gt;&lt;br /&gt;    &lt;ul&gt;        Partial Release (Image &amp;amp; Changes file only)&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://citrissrv2.eecs.berkeley.edu:8888/mantis/view.php?id=87"&gt;Fixed bad bug that was often dumping ~4KB/second to log file.&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://citrissrv2.eecs.berkeley.edu:8888/mantis/view.php?id=74"&gt;Added heads-up navigation keys.&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://citrissrv2.eecs.berkeley.edu:8888/mantis/view.php?id=49"&gt;Cursor changes according to which part of EditBox it's over.&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Various other improvements/fixes.&lt;/li&gt; &lt;/ul&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9100018-111825874953928425?l=orionelenzil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orionelenzil.blogspot.com/feeds/111825874953928425/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9100018&amp;postID=111825874953928425' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/111825874953928425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/111825874953928425'/><link rel='alternate' type='text/html' href='http://orionelenzil.blogspot.com/2005/06/small-new-release-good-stuff.html' title='Small new release - Good Stuff'/><author><name>orion</name><uri>http://www.blogger.com/profile/13279965738021257236</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://elenzil.com/orion/photos/20040708/thumbs/tn_124_2472.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9100018.post-111697018193492712</id><published>2005-05-24T14:23:00.000-07:00</published><updated>2005-05-24T14:29:41.936-07:00</updated><title type='text'>Navigation Buttons</title><content type='html'>&lt;span style="font-family:arial;"&gt;We've been kicking around the idea for a while of putting some heads-up buttons on the screen for navigation. That is, buttons to press for 'forward', 'back' etc.&lt;br /&gt;&lt;br /&gt;Watching a new user yesterday struggle with the QWE/ASD keyboard navigation (mouse navigation was even harder) i decided to add it in sooner rather than later.&lt;br /&gt;&lt;br /&gt;So there's now 6 floating overlay buttons which mirror the layout of QWE/ASD.&lt;br /&gt;When you mouse-click a button, the expected thing happens.&lt;br /&gt;&lt;br /&gt;But what's really good, i think, is that when you press or release a key on the keyboard, these buttons reflect that. It's a very nice visual feedback.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.citris-uc.org/hosted/projects/ith/screenshots/navbuttons.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9100018-111697018193492712?l=orionelenzil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orionelenzil.blogspot.com/feeds/111697018193492712/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9100018&amp;postID=111697018193492712' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/111697018193492712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/111697018193492712'/><link rel='alternate' type='text/html' href='http://orionelenzil.blogspot.com/2005/05/navigation-buttons.html' title='Navigation Buttons'/><author><name>orion</name><uri>http://www.blogger.com/profile/13279965738021257236</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://elenzil.com/orion/photos/20040708/thumbs/tn_124_2472.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9100018.post-111663203105612150</id><published>2005-05-20T16:31:00.000-07:00</published><updated>2005-05-20T16:33:51.060-07:00</updated><title type='text'>Another New Version of the Gallery Released</title><content type='html'>&lt;span style="font-family:arial;"&gt;.. I think i need to change the title of this blog to something more like "Release Notices".&lt;br /&gt;&lt;br /&gt;In any event,&lt;br /&gt;Tao and i have been working steadily on the Gallery software&lt;br /&gt;and finally decided to let loose with a beta release of what we've got.&lt;br /&gt;&lt;br /&gt;You can download it &lt;a href="http://www.citris-uc.org/hosted/projects/ith/gallery/software.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;b&gt;Citris Gallery 2.8.0&lt;/b&gt;&lt;br /&gt;     &lt;ul&gt;        Beta Release&lt;br /&gt;      Many, many new features. (Some of these have links to more info)&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Tweak UI&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Load &amp; Save to XML&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://citrissrv2.eecs.berkeley.edu:8888/mantis/view.php?id=18"&gt;Manipulate lights&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Primitives&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://citrissrv2.eecs.berkeley.edu:8888/mantis/view.php?id=6"&gt;Change wall &amp;amp; floor textures&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Portals to other Spaces!&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://citrissrv2.eecs.berkeley.edu:8888/mantis/view.php?id=49"&gt;Improved TEdit Box&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Improved VRML Loading&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Changeable Avatars&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Spinning Objects&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://citrissrv2.eecs.berkeley.edu:8888/mantis/view.php?id=40"&gt;Patch for locked-down firewalls&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;More included Content&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://citrissrv2.eecs.berkeley.edu:8888/mantis/main_page.php"&gt;.. and so much more!&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9100018-111663203105612150?l=orionelenzil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orionelenzil.blogspot.com/feeds/111663203105612150/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9100018&amp;postID=111663203105612150' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/111663203105612150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/111663203105612150'/><link rel='alternate' type='text/html' href='http://orionelenzil.blogspot.com/2005/05/another-new-version-of-gallery.html' title='Another New Version of the Gallery Released'/><author><name>orion</name><uri>http://www.blogger.com/profile/13279965738021257236</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://elenzil.com/orion/photos/20040708/thumbs/tn_124_2472.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9100018.post-111059071617378442</id><published>2005-03-11T17:24:00.000-08:00</published><updated>2005-03-11T17:25:16.176-08:00</updated><title type='text'>New Version of Gallery Released</title><content type='html'>&lt;span style="font-family:arial;"&gt;&lt;br /&gt;Well it's far from finished&lt;br /&gt;but our rewrite of the Digitial Gallery software&lt;br /&gt;has reached a point where we'd like to share it!&lt;br /&gt;&lt;br /&gt;Documentation and download are available here:&lt;br /&gt;http://www.citris-uc.org/hosted/projects/ith/gallery&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If you used the first version at all,&lt;br /&gt;we think you'll be much happier with this one.&lt;br /&gt;We certainly are.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Additions &amp; Improvements:&lt;br /&gt;&lt;br /&gt;* Gallery design is now entirely in the 3D world,&lt;br /&gt;  no more split 2D/3D business.&lt;br /&gt;&lt;br /&gt;* Collaboration Actually Works!&lt;br /&gt;&lt;br /&gt;* 3D Annotations.&lt;br /&gt;&lt;br /&gt;* VRML model loading.&lt;br /&gt;&lt;br /&gt;* Overall streamlining, improved ease-of-use, etc.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ideas, suggestions, criticism, and bug reports are always welcome-&lt;br /&gt;please use the links at the bottom of the project's web page.&lt;br /&gt;&lt;br /&gt;We've also started an online forum for users of the software,&lt;br /&gt;please feel free to ask questions or report bugs there:&lt;br /&gt;http://makephpbb.com/phpbb/?mforum=citrisgallery&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Best Regards,&lt;br /&gt;&lt;br /&gt;Ruzena, Tao &amp;amp; Orion&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9100018-111059071617378442?l=orionelenzil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orionelenzil.blogspot.com/feeds/111059071617378442/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9100018&amp;postID=111059071617378442' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/111059071617378442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/111059071617378442'/><link rel='alternate' type='text/html' href='http://orionelenzil.blogspot.com/2005/03/new-version-of-gallery-released.html' title='New Version of Gallery Released'/><author><name>orion</name><uri>http://www.blogger.com/profile/13279965738021257236</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://elenzil.com/orion/photos/20040708/thumbs/tn_124_2472.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9100018.post-110989165964201764</id><published>2005-03-03T15:02:00.000-08:00</published><updated>2005-03-03T15:14:19.646-08:00</updated><title type='text'>annotating</title><content type='html'>Annotating seems to be a pretty hot topic lately,&lt;br /&gt;and Tao &amp; i are starting a stab at it.&lt;br /&gt;&lt;br /&gt;The  big debate for us is how to present the text.&lt;br /&gt;&lt;br /&gt;We've argued over it a lot and i think we're going to try a few different methods and see which one(s) we like.&lt;br /&gt;&lt;br /&gt;* 2D morphic pop-up windows in screen-space. (external to the whole croquet window)&lt;br /&gt;* TWindows in camera-space. (ala the default croquet HUD pop-up for left-click)&lt;br /&gt;* TWindows in world-space.&lt;br /&gt;&lt;br /&gt;Re Collaboration:&lt;br /&gt;&lt;br /&gt;* The last approach has a default solution. Just zoom up to the window and edit. (Some tweaks will have to be made to allow an avatar to select thru another avatar when they're superimposed)&lt;br /&gt;&lt;br /&gt;* The first two will need some work. We'd like the annotation to be visible only to those folks who want to see it.  That is if A, B and C are editing the annotation, and D doesn't care, then the annotation shouldn't take up World or Screen real-estate for D.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Meanwhile,&lt;br /&gt;here's a nifty-looking screenshot of the first pass at the annotation incidators.&lt;br /&gt;This required a small change to TRay&gt;&gt; pickTriangles: list: because that routine did not return a normal. I added some very brutish normal calculation and it seems to work as well as could be expected. (quite well in the four or so objects i've tried it on) Change set is available &lt;a href="http://bugs.impara.de/view.php?id=918"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.citris-uc.org/hosted/projects/ith/screenshots/surfacemarkers.png"&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9100018-110989165964201764?l=orionelenzil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orionelenzil.blogspot.com/feeds/110989165964201764/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9100018&amp;postID=110989165964201764' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110989165964201764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110989165964201764'/><link rel='alternate' type='text/html' href='http://orionelenzil.blogspot.com/2005/03/annotating.html' title='annotating'/><author><name>orion</name><uri>http://www.blogger.com/profile/13279965738021257236</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://elenzil.com/orion/photos/20040708/thumbs/tn_124_2472.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9100018.post-110841425175295190</id><published>2005-02-14T12:47:00.000-08:00</published><updated>2005-02-14T12:50:51.753-08:00</updated><title type='text'>getting it</title><content type='html'>A month or so ago when i had been working with meta for a little bit&lt;br /&gt;i went and tried to meta-fy TEditBox so that it would be collaborative&lt;br /&gt;the way TDragger is.  I rapidly fell into a cats cradle of confusion,&lt;br /&gt;hanging images, etc etc.&lt;br /&gt;&lt;br /&gt;Last friday i decided to take another crack,&lt;br /&gt;and it took about half an hour and works great!&lt;br /&gt;&lt;br /&gt;Here's the changeset for any who're interested:&lt;br /&gt;&lt;br /&gt;&lt;a class="moz-txt-link-freetext" href="http://bugs.impara.de/view.php?id=883"&gt;http://bugs.impara.de/view.php?id=883&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Also improved TTorus, giving it a snugly-fitting frameBox and a fun texture Twist parameter.&lt;br /&gt;&lt;img src="http://www.citris-uc.org/hosted/projects/ith/screenshots/donut%20con%20twist.png"&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9100018-110841425175295190?l=orionelenzil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orionelenzil.blogspot.com/feeds/110841425175295190/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9100018&amp;postID=110841425175295190' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110841425175295190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110841425175295190'/><link rel='alternate' type='text/html' href='http://orionelenzil.blogspot.com/2005/02/getting-it.html' title='getting it'/><author><name>orion</name><uri>http://www.blogger.com/profile/13279965738021257236</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://elenzil.com/orion/photos/20040708/thumbs/tn_124_2472.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9100018.post-110790921185465028</id><published>2005-02-08T16:28:00.000-08:00</published><updated>2005-02-08T16:33:31.856-08:00</updated><title type='text'>getting ready for citris open house thursday</title><content type='html'>&lt;span style="font-family:arial;"&gt;After a bit of thought,&lt;br /&gt;Tao and I decided to show the new version of the gallery software at a CITRIS open-house this thursday. While the newer version does not have the media support quite in place, it does feature actual collaborativity and a more intuitive and sexy user interface.&lt;br /&gt;&lt;br /&gt;Today i got the bulk of Tao's mpeg player into the new version,&lt;br /&gt;along with the usual control buttons, but still have a bit of work to do.&lt;br /&gt;&lt;br /&gt;Loading VRML2 files still needs a bit of work and we'll be faking it a little (but truly only a little) at the demo.  One problem we're facing here is collaborative manipulation of 3D objects with the TEditBox.  TEditBox is a wonderful interface but hasn't been meta-fied yet, unlike TDragger.  I may take another stab at bringing meta into the TEB now that i'm a little familiar with how meta works.&lt;br /&gt;Also the texture field of a VRML2 file seems to be being ignored, which i plan on trying to just fix, but i may have to do some work-around like assigning a texture w/ the same name as the file.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9100018-110790921185465028?l=orionelenzil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orionelenzil.blogspot.com/feeds/110790921185465028/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9100018&amp;postID=110790921185465028' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110790921185465028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110790921185465028'/><link rel='alternate' type='text/html' href='http://orionelenzil.blogspot.com/2005/02/getting-ready-for-citris-open-house.html' title='getting ready for citris open house thursday'/><author><name>orion</name><uri>http://www.blogger.com/profile/13279965738021257236</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://elenzil.com/orion/photos/20040708/thumbs/tn_124_2472.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9100018.post-110755220368816197</id><published>2005-02-04T13:09:00.000-08:00</published><updated>2005-02-04T13:23:23.686-08:00</updated><title type='text'>gallery mark 2 demo available</title><content type='html'>&lt;span style="font-family:arial;"&gt;&lt;a href="http://citris-uc.org/hosted/projects/ith/gallery/mark2demo.html"&gt;http://citris-uc.org/hosted/projects/ith/gallery/mark2demo.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Tao and I felt like showing the new version of the gallery in its current state, in hopes of getting feedback etc. This demo is of more interest i think to the Croquet development community than to the actual target users of the software, which are humanities academics.&lt;br /&gt;&lt;br /&gt;We're especially looking for feedback in these areas&lt;br /&gt;&lt;br /&gt;* does it run ?&lt;br /&gt;   * what sort of framerate (and system description)&lt;br /&gt;&lt;br /&gt;* does it run collaboratively ?&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;   * what sort of framerate (and system description)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;* how's the interface ?&lt;br /&gt;   * menus&lt;br /&gt;   * overhead view ('!' button | views | dual view)&lt;br /&gt;   * manipulating walls&lt;br /&gt;&lt;br /&gt;any thought you have are highly welcome.&lt;br /&gt;please email starbow@eecs.berkeley.edu or oxe@eecs.berkeley.edu.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9100018-110755220368816197?l=orionelenzil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orionelenzil.blogspot.com/feeds/110755220368816197/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9100018&amp;postID=110755220368816197' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110755220368816197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110755220368816197'/><link rel='alternate' type='text/html' href='http://orionelenzil.blogspot.com/2005/02/gallery-mark-2-demo-available.html' title='gallery mark 2 demo available'/><author><name>orion</name><uri>http://www.blogger.com/profile/13279965738021257236</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://elenzil.com/orion/photos/20040708/thumbs/tn_124_2472.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9100018.post-110747864975799979</id><published>2005-02-03T16:43:00.000-08:00</published><updated>2005-02-03T16:57:29.756-08:00</updated><title type='text'>too much meta can be a bad thing</title><content type='html'>&lt;span style="font-family:arial;"&gt;This afternoon i learned that too much meta can be a bad thing.&lt;br /&gt;&lt;br /&gt;In our software, you layout walls, and then add 'items' (think paintings) to the walls. This has all been done with meta-fied collaborativity in mind.&lt;br /&gt;&lt;br /&gt;I discovered that when connected, the AddItem method would work as intended on the machine which initiated the AddItem, but on the other machine (or, i presume, machines) a sort of bastard doppelganger of the item would be added in addition to the reglar one. &lt;br /&gt;That is, a nice textured picture would appear on the wall as intended, but an untextured duplicate would appear in the same place.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;The correct item and the doppelganger would have the same teaObjectName, and thus of course have strange collaborative behaviour.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;After some fooling around i learned that it was too much meta !&lt;br /&gt;&lt;br /&gt;Here's the basic code structure which caused the problem:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;----------------------------------------------------------&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;TWall &gt;&gt; addItemWithFileName: fn&lt;br /&gt;  "This method gets called from a user event, so it's not currently meta'd"&lt;br /&gt;&lt;br /&gt;  item := self meta createNewItem.&lt;br /&gt;  item meta setUpStuff: fn.&lt;br /&gt;----------------------------------------------------------&lt;br /&gt;TWall &gt;&gt; createNewItem&lt;br /&gt;  "This is the &lt;span style="font-weight: bold;"&gt;wrong&lt;/span&gt; way to do it - there should be no metas!"&lt;br /&gt;  item := TItem meta new.&lt;br /&gt;  self meta addChild: item.&lt;br /&gt;  ^ item.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;----------------------------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;.. the solution was simply to remove the metas from createNewItem.&lt;br /&gt;&lt;br /&gt;- which is easy enough but somewhat intimidating,&lt;br /&gt;as i was under the impression that using meta while already 'inside' of meta was a safe thing to do. Is this not the case ?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9100018-110747864975799979?l=orionelenzil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orionelenzil.blogspot.com/feeds/110747864975799979/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9100018&amp;postID=110747864975799979' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110747864975799979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110747864975799979'/><link rel='alternate' type='text/html' href='http://orionelenzil.blogspot.com/2005/02/too-much-meta-can-be-bad-thing.html' title='too much meta can be a bad thing'/><author><name>orion</name><uri>http://www.blogger.com/profile/13279965738021257236</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://elenzil.com/orion/photos/20040708/thumbs/tn_124_2472.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9100018.post-110746438209177433</id><published>2005-02-03T13:43:00.000-08:00</published><updated>2005-02-03T13:03:44.503-08:00</updated><title type='text'>Collision Refinements &amp; Smalltalk Gripe</title><content type='html'>&lt;span style="font-family:arial;"&gt;&lt;br /&gt;First, the smalltalk gripe: The syntax for boolean logic is just ugly.&lt;br /&gt;Compare smalltalk and 'C' here:&lt;br /&gt;&lt;br /&gt;(x &lt;= y and: [x &lt;= z]) ifTrue:&lt;br /&gt;&amp;nbsp;&amp;nbsp;[foo := 10.].&lt;br /&gt;vs.&lt;br /&gt;if (x &lt;= y &amp;amp;&amp; x &lt;= z)&lt;br /&gt;&amp;nbsp;&amp;nbsp;foo = 10;&lt;br /&gt;&lt;br /&gt;or, worse horrors, here:&lt;br /&gt;&lt;br /&gt;(a &lt; b and: [a &lt; c and: [a &lt; d]] ifTrue:&lt;br /&gt;&amp;nbsp;&amp;nbsp;[aIsSmall := true.].&lt;br /&gt;vs.&lt;br /&gt;if (a &lt; b &amp;amp;&amp; a &lt; c &amp;amp;&amp; a &lt; d)&lt;br /&gt;&amp;nbsp;&amp;nbsp;aIsSmall = true;&lt;br /&gt;&lt;br /&gt;in both cases, it's pretty easy to tell at a glance what's going on in the 'C' code, whereas the smalltalk code requires you to actually count the brackets etc.&lt;br /&gt;true, i've only barely cut my teeth on smalltalk and have years of 'C' under the belt, but i think there's no denying that smalltalk obsfucates boolean algebra.&lt;br /&gt;&lt;br /&gt;On to Collisions!&lt;br /&gt;&lt;br /&gt;So in the previous post i referred to a shortcut i took in assuming that the avatar needed to be pushed out in the local Z direction, which was more or less valid for cubes which are relatively thin in Z. But i expanded it to do the test for which face of the cube the avatar is closest to, and push it out along that face instead, which works nicely for all faces.&lt;br /&gt;&lt;br /&gt;I also noticed that the rabbit avatar is *not* spherical in extent, and therefor the amount by which the wall extents are expanded should really take into account the orientation of the avatar, which is achieved via this line:&lt;br /&gt;gex _ geometry extent + (geometry inverseGlobalOrientation localPointToGlobal: avatar extent) abs.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;that's all for now.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9100018-110746438209177433?l=orionelenzil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orionelenzil.blogspot.com/feeds/110746438209177433/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9100018&amp;postID=110746438209177433' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110746438209177433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110746438209177433'/><link rel='alternate' type='text/html' href='http://orionelenzil.blogspot.com/2005/02/collision-refinements-smalltalk-gripe.html' title='Collision Refinements &amp; Smalltalk Gripe'/><author><name>orion</name><uri>http://www.blogger.com/profile/13279965738021257236</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://elenzil.com/orion/photos/20040708/thumbs/tn_124_2472.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9100018.post-110739025637719390</id><published>2005-02-02T16:15:00.000-08:00</published><updated>2005-02-02T16:26:42.410-08:00</updated><title type='text'>Collision Detection</title><content type='html'>&lt;span style="font-family:arial;"&gt;Well i was not looking forward to reimplementing collision detection between the avatar and the gallery walls, especially as this time around the walls aren't parameterized as lines on the floor.&lt;br /&gt;&lt;br /&gt;Previously i basically just did 2D intersection, intersecting the line on the floor with the line representing the avatar's movement for this frame.&lt;br /&gt;&lt;br /&gt;This time i decided to try going at it the 'right' way and it worked great.&lt;br /&gt;&lt;br /&gt;The 'right' way of course is to transform the avatar into the wall's coordinate system and do the collision stuff there. It took a bit of flailing around, and the calls i ended up using seem rather like misnomers to me, but in the end it worked great.&lt;br /&gt;&lt;br /&gt;Here's the algo i ended up with:&lt;br /&gt;&lt;br /&gt;1. convert the avatar's position to wall-space.&lt;br /&gt;&lt;blockquote&gt;a1  _ geometry inverseGlobalTransform localPointToGlobal: avatar globalPosition.&lt;br /&gt;&lt;/blockquote&gt;2. extend the wall's extent by the avatar's extent.&lt;br /&gt;   (This is actually somewhat inaccurate unless you also transform the avatar's extent&lt;br /&gt;    out of the avatar's orientation and into the wall's orientation, but what the heck.)&lt;br /&gt;&lt;br /&gt;3. test if the avatar's position (in wall space) is outside the expanded wall extents.&lt;br /&gt;   if so, no collision.&lt;br /&gt;&lt;br /&gt;4. move the avatar outside of the wall.&lt;br /&gt;- I really shortcutted here. The walls are represented as just Cubes who are relatively thin in their Z component. So i just set the avatar's Z (still in wall space) component to be the expanded Z-extent of the wall. (Taking into account the sign of course). This seems to work really well.&lt;br /&gt;&lt;br /&gt;5. convert the modified wall-space avatar position back to global space:&lt;br /&gt;&lt;blockquote&gt;avatar translation: (geometry globalTransform localPointToGlobal: a1).&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;ta da!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;-Also integrated Tao's contentBrowser, improved the menus, and done i don't know what all.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9100018-110739025637719390?l=orionelenzil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orionelenzil.blogspot.com/feeds/110739025637719390/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9100018&amp;postID=110739025637719390' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110739025637719390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110739025637719390'/><link rel='alternate' type='text/html' href='http://orionelenzil.blogspot.com/2005/02/collision-detection.html' title='Collision Detection'/><author><name>orion</name><uri>http://www.blogger.com/profile/13279965738021257236</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://elenzil.com/orion/photos/20040708/thumbs/tn_124_2472.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9100018.post-110730868800433015</id><published>2005-02-01T17:32:00.000-08:00</published><updated>2005-02-01T17:44:48.003-08:00</updated><title type='text'>Busy busy</title><content type='html'>&lt;span style="font-family:arial;"&gt;* integrated Tao's top-view dual camera stuff&lt;br /&gt;  * access from menu&lt;br /&gt;  * return to single view&lt;br /&gt;  * align to avatar / world option&lt;br /&gt;* fixed collaborative problems in wall/item manipulating&lt;br /&gt;* fixed problem in wall Copy (was keeping references to values instead of making copies)&lt;br /&gt;* fixed problem w/ items clamped to wall &amp; being center-dragged off the edge&lt;br /&gt;* added show/hide all draggers&lt;br /&gt;* experimenting with ghosting submenu menu items&lt;br /&gt;- This is something i'm not sure what to do. I don't like squeak's pop-up submenus because the 'root' of the submenu is itself selectable, which i find a confusing user experience.&lt;br /&gt; &lt;img src="http://www.citris-uc.org/hosted/projects/ith/screenshots/menu%20items.png" /&gt;&lt;br /&gt;So, i'm experimenting with making the root item disabled, which makes it grey. (See 'File' in the screenshot).  I'm not quite happy with this tho because the item is grey which 1) is harder to read and 2) suggests an inactive menu item, a dead spot, and the user may pass it by or be confused. Hmmph.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Tao and i are thinking of putting a quick version of this online at the end of the week in case anybody wants to play with it.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9100018-110730868800433015?l=orionelenzil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orionelenzil.blogspot.com/feeds/110730868800433015/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9100018&amp;postID=110730868800433015' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110730868800433015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110730868800433015'/><link rel='alternate' type='text/html' href='http://orionelenzil.blogspot.com/2005/02/busy-busy.html' title='Busy busy'/><author><name>orion</name><uri>http://www.blogger.com/profile/13279965738021257236</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://elenzil.com/orion/photos/20040708/thumbs/tn_124_2472.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9100018.post-110696079030925652</id><published>2005-01-28T17:02:00.000-08:00</published><updated>2005-01-28T17:07:51.120-08:00</updated><title type='text'>Golden Age</title><content type='html'>&lt;span style="font-family:arial;"&gt;Today was really a day from the golden age of a project -&lt;br /&gt;that period where there's enough underpinnings to really start adding features,&lt;br /&gt;when the features you're adding involve some thinking but not really any hideous subterfuge or introspection;&lt;br /&gt;basically there's friendly territory to explore.&lt;br /&gt;It's getting a little bit fun to explore.&lt;br /&gt;I may post a blog-readers-only version sometime next week just for folks to fool around&lt;br /&gt;with the gallery layout interactions. I think they're a little keen, those interactions!&lt;br /&gt;&lt;br /&gt;So, a few more features -&lt;br /&gt;* got rid of the croquet HUD buttons and replaced them with a single button w/ a drop down menu.&lt;br /&gt;* added clamping items to the bounds of their wall&lt;br /&gt;* added keeping walls fixed size, allowing you to rotate them w/o resizing them&lt;br /&gt;* added proportional / static option for how items on walls resize when the wall resizes&lt;br /&gt;* added "restore original aspect ratio" to wall items.&lt;br /&gt;* improved the default settings for walls &amp;amp; items&lt;br /&gt;&lt;br /&gt;Also, the Gallery software will be going out in an upcoming HASTAC newsletter, so that is exciting.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9100018-110696079030925652?l=orionelenzil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orionelenzil.blogspot.com/feeds/110696079030925652/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9100018&amp;postID=110696079030925652' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110696079030925652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110696079030925652'/><link rel='alternate' type='text/html' href='http://orionelenzil.blogspot.com/2005/01/golden-age.html' title='Golden Age'/><author><name>orion</name><uri>http://www.blogger.com/profile/13279965738021257236</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://elenzil.com/orion/photos/20040708/thumbs/tn_124_2472.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9100018.post-110687563522119811</id><published>2005-01-27T17:06:00.000-08:00</published><updated>2005-01-27T17:27:15.223-08:00</updated><title type='text'>more draggers and walls</title><content type='html'>&lt;span style="font-family:arial;"&gt;the collaborative stuff is coming along.&lt;br /&gt;i only had one network glitch today during some collaborative gallery building testing.&lt;br /&gt;(Compared to regular ones earlier. I think this may be due to no longer creating scads of primitives all the time and then removing them. If that is what 'fixed' it, it's probably not really a fix, merely an improvement.)&lt;br /&gt;&lt;br /&gt;* wall rotate.&lt;br /&gt;* new items are now added to the side of the wall which is facing the camera.&lt;br /&gt;* more improvements to TDragger.&lt;br /&gt;* removed pop-up menu at bottom of croquet, removed pop-up overlay.&lt;br /&gt;* added Copy, Delete, Move to other side of Wall.&lt;br /&gt;* fixed the imprecisions when the wall item was dragged beyond the edge of the wall.&lt;br /&gt;  (It was using the extents of the frame containing the wall item itself for positioning)&lt;br /&gt;* various other fixes/small features&lt;br /&gt;&lt;br /&gt;moving on tomorrow to:&lt;br /&gt;* bringing the wave &amp; video player over from the previous version&lt;br /&gt;* making sensible pop-up buttons&lt;br /&gt;  * new gallery&lt;br /&gt;  * save&lt;br /&gt;  * help&lt;br /&gt;  * add wall&lt;br /&gt;  * remove the snapshot camera and telephone&lt;br /&gt;  * add a pop-up to the connect button warning of multiple connects.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9100018-110687563522119811?l=orionelenzil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orionelenzil.blogspot.com/feeds/110687563522119811/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9100018&amp;postID=110687563522119811' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110687563522119811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110687563522119811'/><link rel='alternate' type='text/html' href='http://orionelenzil.blogspot.com/2005/01/more-draggers-and-walls.html' title='more draggers and walls'/><author><name>orion</name><uri>http://www.blogger.com/profile/13279965738021257236</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://elenzil.com/orion/photos/20040708/thumbs/tn_124_2472.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9100018.post-110678497454248519</id><published>2005-01-26T16:12:00.000-08:00</published><updated>2005-01-28T09:48:08.546-08:00</updated><title type='text'>draggers and walls</title><content type='html'>here's a screenshot of the current state of the interactive gallery builder.&lt;br /&gt;recent changes:&lt;br /&gt;* Improved TDragger, thanks to David Faught and David Smith.&lt;br /&gt;  (It now tracks the mouse better, and deals with being inside a rotated TFrame)&lt;br /&gt;* Sswapped out TCubeSubdivided for good ol' TCube in hopes that this will alleviate&lt;br /&gt;  some of the meta memory managment issues i've been seeing.&lt;br /&gt;* Wall items can now more or less be positioned with little draggers.&lt;br /&gt;  There's a bit of squirrelyness going on which i'm planning on ignoring for the moment.&lt;br /&gt;* Hopefully this stuff works when meta. It should. Will test right after a cup of coffee.&lt;br /&gt;&lt;img src="http://www.citris-uc.org/hosted/projects/ith/screenshots/gallery%2020050126.png" alt="" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9100018-110678497454248519?l=orionelenzil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orionelenzil.blogspot.com/feeds/110678497454248519/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9100018&amp;postID=110678497454248519' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110678497454248519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110678497454248519'/><link rel='alternate' type='text/html' href='http://orionelenzil.blogspot.com/2005/01/draggers-and-walls.html' title='draggers and walls'/><author><name>orion</name><uri>http://www.blogger.com/profile/13279965738021257236</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://elenzil.com/orion/photos/20040708/thumbs/tn_124_2472.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9100018.post-110659760749537938</id><published>2005-01-24T13:05:00.000-08:00</published><updated>2005-01-24T12:13:27.496-08:00</updated><title type='text'>aix en provence</title><content type='html'>&lt;span style="font-family:arial;"&gt;I was at a digital theatre workshop in Aix-en-Provence last week and some of the things seem relevant.&lt;br /&gt;&lt;br /&gt;As we know, many people are using game engines, especially Unreal, for non-gaming purposes. A few students at Aix are appropriating it for theatre purposes, and a fellow names Mattias is using the engine specifically for academic galleries! Unfortunately i didn't get a chance to see his software, but it sounded very similar to ours.&lt;br /&gt;&lt;br /&gt;There was a lot of interest from the dance/theatre folks in Citris's &lt;a href="http://www.eecs.berkeley.edu/%7Esangj/"&gt;teleimmersion device&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;That's all for now.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9100018-110659760749537938?l=orionelenzil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orionelenzil.blogspot.com/feeds/110659760749537938/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9100018&amp;postID=110659760749537938' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110659760749537938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110659760749537938'/><link rel='alternate' type='text/html' href='http://orionelenzil.blogspot.com/2005/01/aix-en-provence.html' title='aix en provence'/><author><name>orion</name><uri>http://www.blogger.com/profile/13279965738021257236</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://elenzil.com/orion/photos/20040708/thumbs/tn_124_2472.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9100018.post-110659504974669992</id><published>2005-01-24T11:30:00.000-08:00</published><updated>2005-01-28T09:48:53.336-08:00</updated><title type='text'>collaborativity status</title><content type='html'>Status of the gallery builder rebuilding.&lt;br /&gt;Some basic collaborativity is happening, walls are being manipulated, there's pop-up menus etc.&lt;br /&gt;Here's a quick screenshot.&lt;br /&gt;&lt;img src="http://www.citris-uc.org/hosted/projects/ith/screenshots/state22.png" alt="" /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9100018-110659504974669992?l=orionelenzil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orionelenzil.blogspot.com/feeds/110659504974669992/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9100018&amp;postID=110659504974669992' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110659504974669992'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110659504974669992'/><link rel='alternate' type='text/html' href='http://orionelenzil.blogspot.com/2005/01/collaborativity-status.html' title='collaborativity status'/><author><name>orion</name><uri>http://www.blogger.com/profile/13279965738021257236</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://elenzil.com/orion/photos/20040708/thumbs/tn_124_2472.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9100018.post-110574764328721293</id><published>2005-01-14T15:59:00.000-08:00</published><updated>2005-01-14T16:08:09.840-08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-family:arial;"&gt;Have spent most of my time this week working slowly with Meta.&lt;br /&gt;At this point, things are fairly okay.&lt;br /&gt;Added a new TWall class which is meta-capable and allows users&lt;br /&gt;on either machine to add, delete, clone, and resize/move each wall.&lt;br /&gt;For moving &amp; resizing i instanciated little TDragger spheres at the ends and at&lt;br /&gt;the center of the wall, and then do a little math to make the wall fit the draggers&lt;br /&gt;and vice-versa.&lt;br /&gt;&lt;br /&gt;I'm still having fairly annoying and difficult to reproduce or track down networking problems&lt;br /&gt;where affter a while of just moving walls around in a collaborative setting, somebody simply&lt;br /&gt;gets hung and i get two of these errors:&lt;br /&gt; &lt;img src="http://www.citris-uc.org/hosted/projects/ith/screenshots/the%20target,%20it%20is%20nil.png" /&gt;&lt;br /&gt;and two hung images. Unfortnately i haven't been able to reproduce this using just vanilla TDraggers, so it may be my code altho it's really so simple and intermittent i'd like to think it's not.&lt;br /&gt;&lt;br /&gt;Also spent some time this week investigating a bug in specular shading. I've never seen something quite like it. the bug report is &lt;a href="http://bugs.impara.de/view.php?id=821"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Next week will continue rebuilding the gallery software.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9100018-110574764328721293?l=orionelenzil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orionelenzil.blogspot.com/feeds/110574764328721293/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9100018&amp;postID=110574764328721293' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110574764328721293'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110574764328721293'/><link rel='alternate' type='text/html' href='http://orionelenzil.blogspot.com/2005/01/have-spent-most-of-my-time-this-week.html' title=''/><author><name>orion</name><uri>http://www.blogger.com/profile/13279965738021257236</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://elenzil.com/orion/photos/20040708/thumbs/tn_124_2472.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9100018.post-110538798698622611</id><published>2005-01-10T13:10:00.000-08:00</published><updated>2005-01-10T12:13:06.986-08:00</updated><title type='text'>TQuadSubdivided</title><content type='html'>&lt;span style="font-family:arial;"&gt;I got distracted by implementing a new primitive, &lt;span style="font-weight: bold;"&gt;TQuadSubdivided&lt;/span&gt;.&lt;br&gt;&lt;br /&gt;&lt;img src="http://www.citris-uc.org/hosted/projects/ith/dist/TQuadSubdivided/TQS.png"&gt;&lt;br&gt;&lt;br /&gt;&lt;img src="http://www.citris-uc.org/hosted/projects/ith/dist/TQuadSubdivided/TQ.png"&gt;&lt;br&gt;&lt;br /&gt;Source code and additional screenshots are &lt;a href="http://bugs.impara.de/view.php?id=816"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9100018-110538798698622611?l=orionelenzil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orionelenzil.blogspot.com/feeds/110538798698622611/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9100018&amp;postID=110538798698622611' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110538798698622611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110538798698622611'/><link rel='alternate' type='text/html' href='http://orionelenzil.blogspot.com/2005/01/tquadsubdivided.html' title='TQuadSubdivided'/><author><name>orion</name><uri>http://www.blogger.com/profile/13279965738021257236</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://elenzil.com/orion/photos/20040708/thumbs/tn_124_2472.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9100018.post-110506072776928310</id><published>2005-01-06T17:09:00.000-08:00</published><updated>2005-01-10T12:14:28.670-08:00</updated><title type='text'>Back from break - meta</title><content type='html'>&lt;font face= arial&gt;&lt;br /&gt;Tao and i are back from break and diving back into croquet.&lt;br /&gt;I'm looking at actually bringing collaborativity into the gallery software&lt;br /&gt;and frankly it's fairly daunting as the peer-to-peer stuff seems to be fairly&lt;br /&gt;unrobust. see for example &lt;a href="http://bugs.impara.de/view.php?id=802"&gt;this&lt;/a&gt; and &lt;a href="http://bugs.impara.de/view.php?id=633"&gt;this&lt;/a&gt; as starters. There's plenty of other less reproducible weirdnesses as well.&lt;br&gt;&lt;br /&gt;(edit: Note, these issues have since been resolved by David Smith. Thank you David!)&lt;br /&gt;&lt;br&gt;&lt;br /&gt;I started off trying to add metas to the simplest parts of our gallery software,&lt;br /&gt;but after the better part of a day realized that i was jumping into the deep end&lt;br /&gt;without my water wings on and decided to pull back. The current idea is to rewrite&lt;br /&gt;our entire application from the ground up, ditching the 2D portions in favour of a&lt;br /&gt;completely 3D and collaborative environ from the ground up.&lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;To this end i had some small success today, managing to instanciate a few shared objects with some functionality across a connection.&lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;b&gt;Notes&lt;/b&gt; - things discovered&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;&lt;br /&gt;    &lt;blockquote&gt;cube meta material meta diffuseColor: #(1 1 0 1) asFloatArray&lt;/blockquote&gt;&lt;br /&gt;    is the same as&lt;br /&gt;    &lt;blockquote&gt;cube material meta diffuseColor: #(1 1 0 1) asFloatArray&lt;/blockquote&gt;&lt;br /&gt;  &lt;/li&gt;&lt;br /&gt;  &lt;li&gt;&lt;br /&gt;    &lt;blockquote&gt;cube meta material diffuseColor: #(1 0 0 1)&lt;/blockquote&gt;&lt;br /&gt;    doesn't work.&lt;br /&gt;  &lt;/li&gt;&lt;br /&gt;  &lt;li&gt;&lt;br /&gt;     neither does:&lt;br /&gt;    &lt;blockquote&gt;cube meta material: TMaterial new&lt;/blockquote&gt;&lt;br /&gt;    you need to do&lt;br /&gt;    &lt;blockquote&gt;cube meta material: TMaterial meta new&lt;/blockquote&gt;&lt;br /&gt;  &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9100018-110506072776928310?l=orionelenzil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orionelenzil.blogspot.com/feeds/110506072776928310/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9100018&amp;postID=110506072776928310' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110506072776928310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110506072776928310'/><link rel='alternate' type='text/html' href='http://orionelenzil.blogspot.com/2005/01/back-from-break-meta.html' title='Back from break - meta'/><author><name>orion</name><uri>http://www.blogger.com/profile/13279965738021257236</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://elenzil.com/orion/photos/20040708/thumbs/tn_124_2472.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9100018.post-110376109260167357</id><published>2004-12-22T16:09:00.000-08:00</published><updated>2004-12-22T16:18:22.740-08:00</updated><title type='text'>Wrapping up for x-mas</title><content type='html'>&lt;font face= arial&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;Gutted the mouseDown/Up event handlers in TeapotMorph to get more reliable mouse-over event tracking. Was having trouble before with the mouse being in a weird state after pop-up menus, requiring a few random clicks before mouse-over worked again.&lt;br /&gt;Have thus gotten rid of mouse navigation for the nonce, not sure if we want it back.&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;Increased keyboard-control turn speed&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;Ran into trouble with keyboard event translations on windows XP for the numeric keypad.&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;Added a help button to the overlay.&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;Changed TPrimitive &gt;&gt; colorize: so that it preserves exiosting textures.&lt;br /&gt;see &lt;a href="http://bugs.impara.de/view.php?id=717"&gt;bug report and changeset&lt;/a&gt;.&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;Added menu &amp; meta-info functionality to the body of tao's MPeg Player widget.&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;Fixed problem with position slider in MPeg Player&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;Added 'debug mode' to gallery&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;Got discouraged with implementing collaborativity via meta- controls&lt;br /&gt;  &lt;ul&gt;&lt;br /&gt;    &lt;li&gt;Saving once connected yields unusable image&lt;/li&gt;&lt;br /&gt;    &lt;li&gt;No way to disconnect&lt;/li&gt;&lt;br /&gt;    &lt;li&gt;Connecting is touchy at best&lt;/li&gt;&lt;br /&gt;    &lt;li&gt;TEditBox not meta- aware&lt;/li&gt;&lt;br /&gt;    &lt;li&gt;Development just very inconvenient&lt;/li&gt;&lt;br /&gt;  &lt;/ul&gt;&lt;br /&gt;  However i plan on taking it up again in january.&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;Initial feedback to alpha release of Gallery very positive where present.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9100018-110376109260167357?l=orionelenzil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orionelenzil.blogspot.com/feeds/110376109260167357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9100018&amp;postID=110376109260167357' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110376109260167357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110376109260167357'/><link rel='alternate' type='text/html' href='http://orionelenzil.blogspot.com/2004/12/wrapping-up-for-x-mas.html' title='Wrapping up for x-mas'/><author><name>orion</name><uri>http://www.blogger.com/profile/13279965738021257236</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://elenzil.com/orion/photos/20040708/thumbs/tn_124_2472.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9100018.post-110330760085822495</id><published>2004-12-17T09:54:00.000-08:00</published><updated>2004-12-17T10:20:00.856-08:00</updated><title type='text'>Gallery Updates</title><content type='html'>&lt;font face= arial&gt;&lt;br /&gt;Well we made a limited release of our gallery software on Monday.&lt;br /&gt;It was well-recieved by the folks who've seen it. If you'd like to check it out yourself, please drop me a line.&lt;br /&gt;&lt;br /&gt;We ran into a roadbump because we'd unthinkingly included some content which we did not have permission to redistribute. We took the download offline, and i spent the better part of a day looking for content we Could redistribute with a minimum of travail. Altho many folks pointed me to various collections it still seemed that some official permission would be required, which could take a few days, so in the interim i simply used content of my own visit to iceland, which is in the public domain. I think we will be culling these other sources in the days to come tho!&lt;br /&gt;&lt;br /&gt;On the technical front,&lt;br /&gt;I'm looking at an inproved 3D File loader, as i feel the .ASE loader is primarily way too slow for the sorts of 20,000+ vertex objects we'll be loading regularly, and secondarily .ASE is a bit obscure as far as i've seen. 3DSMax is the only program i've seen which can export it.&lt;br /&gt;So i'm starting on a .obj loader, which will be a bit of a challenge both in the plain conceptual and openGL side (for example .obj supports independant vertex and normal index lists, while openGL seems to require a one-to-one and onto between vertices and normals.) but possibly more significantly in just parsing the file in Smalltalk. I'm pretty used to parsing files with C, but Smalltalk does things a bit different.&lt;br /&gt;&lt;br /&gt;Next but not Less on the technical front,&lt;br /&gt;We need to actually get collaboration working. This means using the meta- constructs in the gallery code, which 'till now we've ignored. Hopefully this will not mean a major rewrite of anything.&lt;br /&gt;&lt;br /&gt;So while Tao's enjoying Hawaii, i'm alternating days on these two items.&lt;br /&gt;&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9100018-110330760085822495?l=orionelenzil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orionelenzil.blogspot.com/feeds/110330760085822495/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9100018&amp;postID=110330760085822495' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110330760085822495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110330760085822495'/><link rel='alternate' type='text/html' href='http://orionelenzil.blogspot.com/2004/12/gallery-updates.html' title='Gallery Updates'/><author><name>orion</name><uri>http://www.blogger.com/profile/13279965738021257236</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://elenzil.com/orion/photos/20040708/thumbs/tn_124_2472.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9100018.post-110210214296098322</id><published>2004-12-03T11:25:00.000-08:00</published><updated>2004-12-03T11:29:02.960-08:00</updated><title type='text'>TDialWidget, gallery next steps</title><content type='html'>&lt;font face= arial&gt;&lt;br /&gt;created TDialWidget,&lt;br /&gt;a simple knob-style in-world 3D widget.&lt;br /&gt;&lt;a href="http://bugs.impara.de/view.php?id=590"&gt;source and screenshot&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;last couple things for working demo of the gallery software:&lt;br /&gt;* reduce texture sizes to something reasonable &amp; power-of-two.&lt;br /&gt;* freestanders !&lt;br /&gt;&lt;br /&gt;have been reporting various bugs, the croquet team responding nicely,&lt;br /&gt;altho my current major issue, the framerate hit we took a few weeks ago&lt;br /&gt;is still open.&lt;br /&gt;&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9100018-110210214296098322?l=orionelenzil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orionelenzil.blogspot.com/feeds/110210214296098322/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9100018&amp;postID=110210214296098322' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110210214296098322'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110210214296098322'/><link rel='alternate' type='text/html' href='http://orionelenzil.blogspot.com/2004/12/tdialwidget-gallery-next-steps.html' title='TDialWidget, gallery next steps'/><author><name>orion</name><uri>http://www.blogger.com/profile/13279965738021257236</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://elenzil.com/orion/photos/20040708/thumbs/tn_124_2472.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9100018.post-110186199523467476</id><published>2004-11-30T16:38:00.000-08:00</published><updated>2004-11-30T16:46:35.236-08:00</updated><title type='text'>slow going</title><content type='html'>&lt;font face= arial&gt;&lt;br /&gt;I keep being brought up short by trying to track down the 520 odd TTextures in my image, but it's a deep search.  I thought it was due to circular garbage collection issues, but apparently Squeak handles that.  We're gaining a texture per gallery item per run. True, the underlying TForms remain at a more or less constant, but it's still troubling.&lt;br /&gt;&lt;br /&gt;The virtual machine is crashing fairly unpredictably.&lt;br /&gt;(Do the same operation 20 times and it'll happen)&lt;br /&gt;&lt;br /&gt;Having trouble with events.&lt;br /&gt;&lt;br /&gt;On the plus side,&lt;br /&gt;Tao has mpeg movies playing in the scene, altho it's been quite a struggle and the results are still fairly rough.&lt;br /&gt;&lt;br /&gt;Also in the 'achievements' category, made a basic TSlider class which is what you think of as a GUI Slider where the user can click the knob and slide it along the track.  Caveat: I wasn't able to get TRay intersection info out of the pointerMove: event, so it only responds meaningfully to pointerDown, and not to pointerMove.&lt;br /&gt;&lt;br /&gt;Am turning now to getting some of our 3D models into the world.&lt;br /&gt;&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9100018-110186199523467476?l=orionelenzil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orionelenzil.blogspot.com/feeds/110186199523467476/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9100018&amp;postID=110186199523467476' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110186199523467476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110186199523467476'/><link rel='alternate' type='text/html' href='http://orionelenzil.blogspot.com/2004/11/slow-going.html' title='slow going'/><author><name>orion</name><uri>http://www.blogger.com/profile/13279965738021257236</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://elenzil.com/orion/photos/20040708/thumbs/tn_124_2472.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9100018.post-110134008348718844</id><published>2004-11-24T15:37:00.000-08:00</published><updated>2004-11-24T15:50:16.510-08:00</updated><title type='text'>sans titre</title><content type='html'>&lt;font face= arial&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;finished shared MetaInfo object shared between 2D and 3D views.&lt;br /&gt;Includes handling for different 2D and 3D implementations of the 'manipulate' menu item.&lt;br /&gt;Implemented with a dictionary and relevant conveniences to allow adding new meta data fields and custom handlers etc etc.&lt;br /&gt;the meta info is saved &amp; loaded properly w/ the existing Save/Load feature.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;got 'yellow button' click to pop up a menu in 2D view, thanks to Scott Wallace.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;began a weakreferencing link object to allow mirroring of 'manipulations' in realtime between 2D and 3D views, but backed off realizing that it may be more work than we want to sink into the 2D view right now.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;reworked TWavePlayer as a subclass of TWallItem so that it handles the layout provided by the 2D view precisely.&lt;br /&gt;it now gets the benefit of the meta-info stuff as well.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;stuff from recent days:&lt;ul&gt;&lt;br /&gt;&lt;li&gt;fixed click-thru-able walls.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;removed the audible echo, thanks to Andreas.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9100018-110134008348718844?l=orionelenzil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orionelenzil.blogspot.com/feeds/110134008348718844/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9100018&amp;postID=110134008348718844' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110134008348718844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110134008348718844'/><link rel='alternate' type='text/html' href='http://orionelenzil.blogspot.com/2004/11/sans-titre_24.html' title='sans titre'/><author><name>orion</name><uri>http://www.blogger.com/profile/13279965738021257236</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://elenzil.com/orion/photos/20040708/thumbs/tn_124_2472.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9100018.post-110073082154616597</id><published>2004-11-17T14:32:00.000-08:00</published><updated>2004-11-17T17:12:04.696-08:00</updated><title type='text'>more click thru</title><content type='html'>&lt;font face= arial&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;My gallery walls are not opaque to mouseclicks - you can click on buttons on the other side of a wall.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Added multiple URLs in content-sensitive drop-down menu.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Need to learn how to build GUIs in squeak. Edit the list of URLs, eg. Annotations.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The mouse-up event is getting lost sometimes when a pop-up menu is involved.&lt;br /&gt;This makes trouble for the 3D OnEnter/OnLeave/OnDown/OnUp stuff. Not sure how to fix. One possibility is if the pop-up menu sent a callback to croquet when the menu is done, notifying squeak of the current mouse status.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;screenshot:&lt;br /&gt;the RMB was just clicked near the upper left of the menu.&lt;br /&gt;&lt;img src="http://www.elenzil.com/orion/citris/menus.jpg"&gt;&lt;br /&gt;&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9100018-110073082154616597?l=orionelenzil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orionelenzil.blogspot.com/feeds/110073082154616597/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9100018&amp;postID=110073082154616597' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110073082154616597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110073082154616597'/><link rel='alternate' type='text/html' href='http://orionelenzil.blogspot.com/2004/11/more-click-thru.html' title='more click thru'/><author><name>orion</name><uri>http://www.blogger.com/profile/13279965738021257236</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://elenzil.com/orion/photos/20040708/thumbs/tn_124_2472.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9100018.post-110063347146286003</id><published>2004-11-16T11:29:00.000-08:00</published><updated>2004-11-16T16:56:37.293-08:00</updated><title type='text'>click-thru</title><content type='html'>&lt;font face= arial&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;yesterday Tao &amp; i met with Andreas &amp; David Smith and picked their brains a good bit.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;adding mouse-over to pictures on the gallery walls,&lt;br /&gt;with cursor changing &amp; pop-up text to indicate links to external files.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;need to find a cross-platform way to launch an external file. at least launch a URL.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;need to swap the left mouse button and the right for menu actions.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9100018-110063347146286003?l=orionelenzil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orionelenzil.blogspot.com/feeds/110063347146286003/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9100018&amp;postID=110063347146286003' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110063347146286003'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110063347146286003'/><link rel='alternate' type='text/html' href='http://orionelenzil.blogspot.com/2004/11/click-thru.html' title='click-thru'/><author><name>orion</name><uri>http://www.blogger.com/profile/13279965738021257236</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://elenzil.com/orion/photos/20040708/thumbs/tn_124_2472.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9100018.post-110028288945845565</id><published>2004-11-12T10:04:00.000-08:00</published><updated>2004-11-12T16:21:20.176-08:00</updated><title type='text'>sans titre</title><content type='html'>&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;still fooling with the blog thing. should i only put things here which are relevant to other readers ? or include a fair amount of notes-to-self. probably the former. but here's a go at the latter.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;removed TWavePlayer's dependance on TeapotMorph's loadAmbientSound.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;where is that audible echo coming from ?&lt;br /&gt; eg when you close a TeapotMorph,&lt;br /&gt; the little beep echos. same for playing back an MP3.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;added a notion of "peers" to TWavePlayers, so that if you've got a bank of em on a gallery wall, playing one will pause the others.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;added a current-position indicator to TWavePlayer, so you have some idea how close a wave is to finishing, and also whether a given wave is active. Uses basic stepping. Snapshot below.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;img src="http://www.elenzil.com/orion/citris/TWavePlayer_20041112.jpg"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9100018-110028288945845565?l=orionelenzil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orionelenzil.blogspot.com/feeds/110028288945845565/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9100018&amp;postID=110028288945845565' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110028288945845565'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110028288945845565'/><link rel='alternate' type='text/html' href='http://orionelenzil.blogspot.com/2004/11/sans-titre.html' title='sans titre'/><author><name>orion</name><uri>http://www.blogger.com/profile/13279965738021257236</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://elenzil.com/orion/photos/20040708/thumbs/tn_124_2472.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9100018.post-110019774888422318</id><published>2004-11-11T10:28:00.000-08:00</published><updated>2004-11-11T10:29:08.886-08:00</updated><title type='text'>rainy veteran's day</title><content type='html'>&lt;font face= arial&gt;&lt;br /&gt;i need to figure out how to get to work without getting soaked,&lt;br /&gt;and also how to get into the building on holidays.&lt;br /&gt;&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9100018-110019774888422318?l=orionelenzil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orionelenzil.blogspot.com/feeds/110019774888422318/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9100018&amp;postID=110019774888422318' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110019774888422318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110019774888422318'/><link rel='alternate' type='text/html' href='http://orionelenzil.blogspot.com/2004/11/rainy-veterans-day.html' title='rainy veteran&apos;s day'/><author><name>orion</name><uri>http://www.blogger.com/profile/13279965738021257236</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://elenzil.com/orion/photos/20040708/thumbs/tn_124_2472.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9100018.post-110013608675551679</id><published>2004-11-10T17:16:00.000-08:00</published><updated>2004-11-10T17:21:26.756-08:00</updated><title type='text'>TWavePlayer first version</title><content type='html'>&lt;font face= arial&gt;&lt;br /&gt;Basic play pause stop functionality working via the Ambient sound business.&lt;br /&gt;Added a TWall method for attaching the player control panel to a TWall.&lt;br /&gt;&lt;br /&gt;todo:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;wire it up to the 2D Gallery stuff&lt;/li&gt;&lt;br /&gt;&lt;li&gt;use 3D spatialized sound instead of ambient sound.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;had to subclass TSpace to get a hook back to TeapotMorph to be able to use LoadAmbient sound&lt;/li&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;It'd be nice not to do that.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Maybe just skip the whole Croquet sound structure until localized sounds are avail?&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9100018-110013608675551679?l=orionelenzil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orionelenzil.blogspot.com/feeds/110013608675551679/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9100018&amp;postID=110013608675551679' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110013608675551679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110013608675551679'/><link rel='alternate' type='text/html' href='http://orionelenzil.blogspot.com/2004/11/twaveplayer-first-version.html' title='TWavePlayer first version'/><author><name>orion</name><uri>http://www.blogger.com/profile/13279965738021257236</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://elenzil.com/orion/photos/20040708/thumbs/tn_124_2472.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9100018.post-110012655337293666</id><published>2004-11-10T14:39:00.000-08:00</published><updated>2004-11-11T10:24:54.693-08:00</updated><title type='text'>TButtonCylinder finishe</title><content type='html'>&lt;span style="font-family:arial;"&gt;okay, so TButtonCylinder is done.&lt;br /&gt;It came out fairly well.&lt;br /&gt;The visual feedback is satisfying.&lt;br /&gt;&lt;br /&gt;I declined to throw in audio feedback because i was worried about interactions with TSpace's ambient sound stuff, and didn't want to use plain old playNamedSound the way the camera snapshot does because i'm not familiar with named sounds.&lt;br /&gt;&lt;br /&gt;The changeset is &lt;a href="http://bugs.impara.de/bug_view_page.php?bug_id=0000513"&gt;here at mantis&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Snapshot:&lt;br /&gt;&lt;img src="http://www.elenzil.com/orion/citris/TButtonCylinder.jpg"&gt;&lt;br /&gt;&lt;br /&gt;orion&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9100018-110012655337293666?l=orionelenzil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orionelenzil.blogspot.com/feeds/110012655337293666/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9100018&amp;postID=110012655337293666' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110012655337293666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110012655337293666'/><link rel='alternate' type='text/html' href='http://orionelenzil.blogspot.com/2004/11/tbuttoncylinder-finishe.html' title='TButtonCylinder finishe'/><author><name>orion</name><uri>http://www.blogger.com/profile/13279965738021257236</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://elenzil.com/orion/photos/20040708/thumbs/tn_124_2472.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9100018.post-110011204022027002</id><published>2004-11-10T10:34:00.000-08:00</published><updated>2004-11-10T10:41:47.416-08:00</updated><title type='text'>New button class - TButtonCylinder</title><content type='html'>&lt;span style="font-family:arial;"&gt;Today i'm starting on a new button class - TButtonCylinder.&lt;br /&gt;The motivation here is that TButton uses TFrame::Colorize,&lt;br /&gt;which wipes out the materials (and textures) of the &lt;primitive&gt; it contains.&lt;br /&gt;&lt;br /&gt;The TButtonCylinder will basically be a (squat) cylinder,&lt;br /&gt;with texture mapping added to the caps so that you can easily&lt;br /&gt;put a little image on the cap and thus get a nice little round button.&lt;br /&gt;&lt;br /&gt;For feedback, the button will depress/express a little bit on mouse-over,&lt;br /&gt;depress more on mouse-down, and pop back on mouse-up.&lt;br /&gt;I may also attach some small little sounds to these actions.&lt;br /&gt;&lt;br /&gt;The fire:target:with: stuff will emulate TButton.&lt;br /&gt;&lt;br /&gt;This will include a new class: TCylinderOxe which is a subclass of TCylinder&lt;br /&gt;with texture mapping on the caps added and the default stacks and slices changed.&lt;br /&gt;&lt;br /&gt;This button will be used in a simple wave-file control.&lt;br /&gt;(ie play stop pause).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/primitive&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9100018-110011204022027002?l=orionelenzil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orionelenzil.blogspot.com/feeds/110011204022027002/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9100018&amp;postID=110011204022027002' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110011204022027002'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110011204022027002'/><link rel='alternate' type='text/html' href='http://orionelenzil.blogspot.com/2004/11/new-button-class-tbuttoncylinder.html' title='New button class - TButtonCylinder'/><author><name>orion</name><uri>http://www.blogger.com/profile/13279965738021257236</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://elenzil.com/orion/photos/20040708/thumbs/tn_124_2472.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9100018.post-110011046123015132</id><published>2004-11-10T10:11:00.000-08:00</published><updated>2004-11-10T10:33:32.323-08:00</updated><title type='text'>about this blog</title><content type='html'>&lt;span style="font-family:arial;"&gt;So this blog is just where i'm going to post pretty short notes about what i'm doing in croquet, largely so that hopefully it'll be googleable.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9100018-110011046123015132?l=orionelenzil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orionelenzil.blogspot.com/feeds/110011046123015132/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9100018&amp;postID=110011046123015132' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110011046123015132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9100018/posts/default/110011046123015132'/><link rel='alternate' type='text/html' href='http://orionelenzil.blogspot.com/2004/11/about-this-blog.html' title='about this blog'/><author><name>orion</name><uri>http://www.blogger.com/profile/13279965738021257236</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://elenzil.com/orion/photos/20040708/thumbs/tn_124_2472.jpg'/></author><thr:total>0</thr:total></entry></feed>
