[Bf-python] Remote bpy for Blender2.5

Goat Man goatman.py at gmail.com
Sat Jul 31 06:58:49 CEST 2010


I'm getting close to something that fully works, i think i have resolved the
data access issues, in the latest code i just posted on google you can get
and set vertex positions.

http://code.google.com/p/rbpy/


On Fri, Jul 30, 2010 at 3:56 PM, Stuart Axon <stuaxo2 at yahoo.com> wrote:

> Is it worth chucking this on google code or somewhere, maybe ?
>
> S++
>
>
> *From:* Goat Man <goatman.py at gmail.com>
> *To:* Blender Foundation Python list <bf-python at blender.org>
> *Sent:* Fri, July 30, 2010 3:11:32 AM
> *Subject:* [Bf-python] Remote bpy for Blender2.5
>
> http://pastebin.com/B8PmuDrv
>
> Allows access to bpy.ops and bpy.data from a remote python2 or PyPy
> interpreter. Implementation uses a pipe, but this can be replaced by a
> socket for truly remote access. The binding generator works by RNA
> introspection, and outputs RPython compatible code. Optionally you can write
> RPython code that will compile to C. This proxy is also useful if you need a
> python2 interpreter to talk to a python3 interpreter outside of Blender.
>
> Currently a hack is used to make Blender listen on the pipe, using playback
> and the on_redraw event, hopefully Blender will provide an interface soon
> for talking on pipes/sockets and forced redraw events
>
> Example:
>
> def pypy_entry_point_test_bpy():
>     ## init wrapper ##
>     bpy_ops = bpy_ops_wrapped()
>     bpy_ops_mesh = bpy_ops.mesh()
>     bpy_data = bpy_data_wrapped()
>     bpy_data_objects = bpy_data.objects()
>     ######################
>
>     objs = bpy_data_objects.values()
>     for ob in objs:
>         debug(str(ob))
>         debug( str( ob.location()) )
>
>     names = bpy_data_objects.keys()
>     camera = None
>     for n in names:
>         ob = bpy_data_objects.get( n )
>         if n == 'Camera':
>             camera = ob
>             scale = camera.GET_scale()
>             debug( 'camera scale: %s' %scale )
>             scale[0] = 10.0
>             camera.scale( scale )
>             break
>
>     i = 0
>     while True:
>         x = math.sin( radians(i) ) * 1.0
>         y = math.cos( radians(i) ) * 1.0
>         bpy_ops_mesh.primitive_plane_add( location=(x,y,.0) )
>         for ob in objs: ob.location( [x,y,.0] )
>         i += 1
>         if i == 360: break
>
>
>
>
>
> _______________________________________________
> Bf-python mailing list
> Bf-python at blender.org
> http://lists.blender.org/mailman/listinfo/bf-python
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.blender.org/pipermail/bf-python/attachments/20100730/c261460d/attachment.html>


More information about the Bf-python mailing list