<?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-7777406140598574068</id><updated>2012-02-16T09:30:33.825-08:00</updated><title type='text'>Eric's PySoy Blog</title><subtitle type='html'>A chronicle of Eric Stein's work on PySoy.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ericsoy.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7777406140598574068/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://ericsoy.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Eric Stein</name><uri>http://www.blogger.com/profile/11002809785039306804</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://toba.ath.cx:724/~eastein/profilesmall.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>9</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7777406140598574068.post-5415247565261353694</id><published>2007-10-02T14:57:00.000-07:00</published><updated>2007-10-02T15:04:47.406-07:00</updated><title type='text'>Re: Maintainer's Update</title><content type='html'>As I haven't posted anything in awhile either, after seeing Arc's post I figure it's time to let everyone know how things are.&lt;br /&gt;&lt;br /&gt;First, welcome to team &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;PySoy&lt;/span&gt;, Kirk and Derek!  Derek's done some good texture work with video decoding and Cairo for text, and Kirk has recently been pushing very hard towards a working Windows build!  Thanks for your work, it really is appreciated.&lt;br /&gt;&lt;br /&gt;So, why haven't I been doing much recently?  Well, I'm back at school, working towards my Master's in CS, which tends to use up a lot of time.  I've got some ideas knocking around in the back of my head, though... there might be some code for encapsulating surface behaviour for collisions sometime in the next decade or so.&lt;br /&gt;&lt;br /&gt;I'd love to see input handling working sometime soon as well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7777406140598574068-5415247565261353694?l=ericsoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ericsoy.blogspot.com/feeds/5415247565261353694/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7777406140598574068&amp;postID=5415247565261353694' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7777406140598574068/posts/default/5415247565261353694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7777406140598574068/posts/default/5415247565261353694'/><link rel='alternate' type='text/html' href='http://ericsoy.blogspot.com/2007/10/re-maintainers-update.html' title='Re: Maintainer&apos;s Update'/><author><name>Eric Stein</name><uri>http://www.blogger.com/profile/11002809785039306804</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://toba.ath.cx:724/~eastein/profilesmall.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7777406140598574068.post-1355703216944202807</id><published>2007-08-19T00:52:00.000-07:00</published><updated>2007-08-19T01:03:57.451-07:00</updated><title type='text'>soy.bodies.fields.Bouyancy</title><content type='html'>Over the last week, I've done quite a bit of work on bouyancy.  It's an interesting problem, one that always appears simpler than it really is.  The basic concept, that gravity (i.e. soy.bodies.fields.Monopole) effects bodies based on their mass minus their displacement, is deceptively concise.&lt;br /&gt;&lt;br /&gt;First, you have to find a way to calculate all the displacements before you try to do gravity calculations.  In this case, it required moving the gravity calculations into _commit() and adding action list population to _exert().  This allowed me to leave the displacement math in Bouyancy, storing the information in the bmass tag on effected bodies.  However, this leaves yet another problem; all those tags are getting set, but nothing is out there unsetting them. Thankfully, we have Bouyancy._give() to the rescue, ready to clear up all those pesky tags in the cycles where Bouyancy is going to be repopulating them.&lt;br /&gt;&lt;br /&gt;Unfortunately, our deceptively simple problem isn't done with us yet.  We still don't have a good way to actually calculate displacement.  As ODE doesn't have support for this, we have to write an approximation of sorts, and whichever way we do it, some cases are going to lose out.  I settled on using pointDepth and a generalized Shape._radius() fuction to estimate how much of the shape of the body was within the Bouyancy field, but I welcome any input on improvements.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7777406140598574068-1355703216944202807?l=ericsoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ericsoy.blogspot.com/feeds/1355703216944202807/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7777406140598574068&amp;postID=1355703216944202807' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7777406140598574068/posts/default/1355703216944202807'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7777406140598574068/posts/default/1355703216944202807'/><link rel='alternate' type='text/html' href='http://ericsoy.blogspot.com/2007/08/soybodiesfieldsbouyancy.html' title='soy.bodies.fields.Bouyancy'/><author><name>Eric Stein</name><uri>http://www.blogger.com/profile/11002809785039306804</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://toba.ath.cx:724/~eastein/profilesmall.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7777406140598574068.post-6860670186888205350</id><published>2007-08-08T13:29:00.000-07:00</published><updated>2007-08-19T00:52:06.155-07:00</updated><title type='text'>Wind in my sails</title><content type='html'>While things have been pretty quiet recently, I've been getting things done, albeit to an empty theater.  There are now several field types that work.  While building them, I've added several features to the field system.  There are now four functions that can be either defined or not:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;int _apply()&lt;/li&gt;&lt;ul&gt;&lt;li&gt;This function performs the field activation for universal fields (fields not confined to one area).&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;int _exert(other)&lt;/li&gt;&lt;ul&gt;&lt;li&gt;This function is called when a field must be applied to a body it effects.  Its return value indicates whether exertion was final (i.e. does not need _commit() to be called).&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;void _give(mode)&lt;/li&gt;&lt;ul&gt;&lt;li&gt;At the beginning of each field cycle, this function is called.  As for mode, 1 means we're in a physics cycle, 0 means we're in a universal cycle.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;void _commit()&lt;/li&gt;&lt;ul&gt;&lt;li&gt;At the end of each physics cycle, this function is called if _exert ever returned 0 (for non-completeness).  In the non-collide physics cycle (for universal fields), the Field._apply() function performs a vital part here - careful while overriding it.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;This summarizes the API of sorts that I've built for making fields.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7777406140598574068-6860670186888205350?l=ericsoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ericsoy.blogspot.com/feeds/6860670186888205350/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7777406140598574068&amp;postID=6860670186888205350' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7777406140598574068/posts/default/6860670186888205350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7777406140598574068/posts/default/6860670186888205350'/><link rel='alternate' type='text/html' href='http://ericsoy.blogspot.com/2007/08/wind-in-my-sails.html' title='Wind in my sails'/><author><name>Eric Stein</name><uri>http://www.blogger.com/profile/11002809785039306804</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://toba.ath.cx:724/~eastein/profilesmall.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7777406140598574068.post-7886770465238326617</id><published>2007-07-08T22:55:00.000-07:00</published><updated>2007-07-08T23:02:50.450-07:00</updated><title type='text'>Beta-1, here we come</title><content type='html'>I've finished my milestones for the first beta; all the placeable shapes are there, autofields of both varieties work, and bodies have arbitrary tags that will have some utility later.  I may be doing various other work before the beta, but I've pretty much got it all under wraps.&lt;br /&gt;&lt;br /&gt;Break out the champagne!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7777406140598574068-7886770465238326617?l=ericsoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ericsoy.blogspot.com/feeds/7886770465238326617/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7777406140598574068&amp;postID=7886770465238326617' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7777406140598574068/posts/default/7886770465238326617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7777406140598574068/posts/default/7886770465238326617'/><link rel='alternate' type='text/html' href='http://ericsoy.blogspot.com/2007/07/beta-1-here-we-come.html' title='Beta-1, here we come'/><author><name>Eric Stein</name><uri>http://www.blogger.com/profile/11002809785039306804</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://toba.ath.cx:724/~eastein/profilesmall.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7777406140598574068.post-8139189158386306136</id><published>2007-07-06T10:51:00.000-07:00</published><updated>2007-07-06T10:58:29.893-07:00</updated><title type='text'>Autofields working with shapes for activation</title><content type='html'>I've recently finished enabling activation of fields by collision.  Of course, this requires that both the field and any bodies it must effect.  Fields with no shape apply to all bodies in the scene, as before.  Here's an example, available in the tests directory as collide_field.py.&lt;br /&gt;&lt;blockquote&gt;from time import sleep&lt;br /&gt;import soy&lt;br /&gt;sce = soy.Scene()&lt;br /&gt;cam = soy.bodies.Camera(sce)&lt;br /&gt;cam.position = (0,0,13)&lt;br /&gt;py1 = soy.bodies.Pyramid(sce)&lt;br /&gt;py1.position = (-2,0,0)&lt;br /&gt;py1.shape = soy.shapes.Sphere(1)&lt;br /&gt;py1.velocity = (0,0.7,0)&lt;br /&gt;py2 = soy.bodies.Pyramid(sce)&lt;br /&gt;py2.position = (0,0,0)&lt;br /&gt;py2.shape = soy.shapes.Sphere(1)&lt;br /&gt;py2.velocity = (0,0.7,0)&lt;br /&gt;py3 = soy.bodies.Pyramid(sce)&lt;br /&gt;py3.position = (2,0,0)&lt;br /&gt;py3.shape = soy.shapes.Sphere(1)&lt;br /&gt;py3.velocity = (0,0.7,0)&lt;br /&gt;scr = soy.Screen()&lt;br /&gt;win = soy.Window(scr, size=(640,480))&lt;br /&gt;pro = soy.widgets.Projector(win, size=(640,480), camera=cam)&lt;br /&gt;m = soy.bodies.fields.Monopole(sce)&lt;br /&gt;m.position=(3,4.8,0)&lt;br /&gt;m.shape=soy.shapes.Sphere(4.4)&lt;br /&gt;m.multiplier=4&lt;/blockquote&gt;&lt;br /&gt;You should notice the pyramids being repelled by interesecting an invisible sphere.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7777406140598574068-8139189158386306136?l=ericsoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ericsoy.blogspot.com/feeds/8139189158386306136/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7777406140598574068&amp;postID=8139189158386306136' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7777406140598574068/posts/default/8139189158386306136'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7777406140598574068/posts/default/8139189158386306136'/><link rel='alternate' type='text/html' href='http://ericsoy.blogspot.com/2007/07/autofields-working-with-shapes-for.html' title='Autofields working with shapes for activation'/><author><name>Eric Stein</name><uri>http://www.blogger.com/profile/11002809785039306804</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://toba.ath.cx:724/~eastein/profilesmall.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7777406140598574068.post-584908940652715110</id><published>2007-06-23T18:56:00.000-07:00</published><updated>2007-06-24T21:47:25.339-07:00</updated><title type='text'>Autofields!</title><content type='html'>I haven't posted much yet.  This is because there hasn't been much to show off yet.  Now, there is.  I've got fields working automatically from coreloop.  Here's an example....&lt;br /&gt;&lt;blockquote&gt;import soy&lt;br /&gt;sce = soy.Scene()&lt;br /&gt;cam = soy.bodies.Camera(sce)&lt;br /&gt;cam.position = (0,0,10)&lt;br /&gt;py1 = soy.bodies.Pyramid(sce)&lt;br /&gt;py1.position = (-2,0,0)&lt;br /&gt;py2 = soy.bodies.Pyramid(sce)&lt;br /&gt;py2.position = (0,0,0)&lt;br /&gt;py3 = soy.bodies.Pyramid(sce)&lt;br /&gt;py3.position = (2,0,0)&lt;br /&gt;scr = soy.Screen()&lt;br /&gt;win = soy.Window(scr, size=(640,480))&lt;br /&gt;pro = soy.widgets.Projector(win, size=(640,480), camera=cam)&lt;br /&gt;m = soy.bodies.fields.Monopole(sce)&lt;br /&gt;m.position=(-1.5,3,0)&lt;br /&gt;m.multiplier=-2&lt;/blockquote&gt;&lt;blockquote&gt;&lt;/blockquote&gt;I haven't got around to normalizing the acceleration based on the timestep, but it's coming.&lt;br /&gt;&lt;br /&gt;Edit: updated example to avoid warning&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7777406140598574068-584908940652715110?l=ericsoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ericsoy.blogspot.com/feeds/584908940652715110/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7777406140598574068&amp;postID=584908940652715110' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7777406140598574068/posts/default/584908940652715110'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7777406140598574068/posts/default/584908940652715110'/><link rel='alternate' type='text/html' href='http://ericsoy.blogspot.com/2007/06/autofields.html' title='Autofields!'/><author><name>Eric Stein</name><uri>http://www.blogger.com/profile/11002809785039306804</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://toba.ath.cx:724/~eastein/profilesmall.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7777406140598574068.post-1348771074076757692</id><published>2007-06-03T01:55:00.000-07:00</published><updated>2007-06-03T01:58:32.254-07:00</updated><title type='text'>ODE to joy</title><content type='html'>Today I familiarized myself with a good portion of the code and I've made the first step towards my actual project - working ODE code.  It's only a test routine to nudge a body slightly, but now I know how to add ODE functions &amp; use them on bodies.  This week is going to be far more productive than last week was.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7777406140598574068-1348771074076757692?l=ericsoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ericsoy.blogspot.com/feeds/1348771074076757692/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7777406140598574068&amp;postID=1348771074076757692' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7777406140598574068/posts/default/1348771074076757692'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7777406140598574068/posts/default/1348771074076757692'/><link rel='alternate' type='text/html' href='http://ericsoy.blogspot.com/2007/06/ode-to-joy.html' title='ODE to joy'/><author><name>Eric Stein</name><uri>http://www.blogger.com/profile/11002809785039306804</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://toba.ath.cx:724/~eastein/profilesmall.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7777406140598574068.post-4461973912558200285</id><published>2007-05-29T01:00:00.000-07:00</published><updated>2007-05-29T01:03:46.045-07:00</updated><title type='text'>And so it begins...</title><content type='html'>Here we are, the first day over.  Angelo has got Jaycee and I choking on his dust, so I am going to have to step it up tomorrow.  Pyrex is more complicated than I was expecting... but I think I've got the idea now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7777406140598574068-4461973912558200285?l=ericsoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ericsoy.blogspot.com/feeds/4461973912558200285/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7777406140598574068&amp;postID=4461973912558200285' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7777406140598574068/posts/default/4461973912558200285'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7777406140598574068/posts/default/4461973912558200285'/><link rel='alternate' type='text/html' href='http://ericsoy.blogspot.com/2007/05/and-so-it-begins.html' title='And so it begins...'/><author><name>Eric Stein</name><uri>http://www.blogger.com/profile/11002809785039306804</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://toba.ath.cx:724/~eastein/profilesmall.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7777406140598574068.post-4479771382351412196</id><published>2007-04-12T21:31:00.000-07:00</published><updated>2007-04-12T21:37:29.169-07:00</updated><title type='text'>Generic Introductory Post</title><content type='html'>I'm very happy to be accepted to the Google Summer of Code as a PySoy contributor!  I'm going to be adding fields and waves to PySoy and testing 64 bit compatibility along the way.  For more information, see &lt;a href="http://code.google.com/soc/psf/appinfo.html?csaid=DBE9407AFCF658C4"&gt;my accepted application&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7777406140598574068-4479771382351412196?l=ericsoy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ericsoy.blogspot.com/feeds/4479771382351412196/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7777406140598574068&amp;postID=4479771382351412196' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7777406140598574068/posts/default/4479771382351412196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7777406140598574068/posts/default/4479771382351412196'/><link rel='alternate' type='text/html' href='http://ericsoy.blogspot.com/2007/04/generic-introductory-post.html' title='Generic Introductory Post'/><author><name>Eric Stein</name><uri>http://www.blogger.com/profile/11002809785039306804</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://toba.ath.cx:724/~eastein/profilesmall.png'/></author><thr:total>0</thr:total></entry></feed>
