Ephestos 0.1 released

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

Ephestos 0.1 released

kilon.alios

This is 0.1 the first stable release of Ephestos. This release contains the following

-a socket client bridge for sending and receiving messages from Blender which acts as a socket server

a sendMessage: message to send python command as string to Blender to be executed

a python parser that allows the pharo syntax to be used to parse to a python command for simple things like calling instance and class method and assigning class and instance variables

a getValue: message for reading python values from variables

support for triggering the pharo debugger on python error

support for sending multiple lines of python code in a single message, for defining python classes and much more.

A video demonstration can be found here only for the new features:

https://www.youtube.com/watch?v=XPGDQc5LUvE&feature=youtu.be


Documentation is here , its outdated because it does not contain the new features but will update in a few days --> https://www.gitbook.io/book/kilon/ephestos


With release 0.1 the core features of Ephestos have been finalised. It now can be used for full controlling Blender.  The next step is to refine getting values from Blender so they are automagically converted from strings to Pharo data types. 


I also will start working on a customised GUI and creating an API for it, the goal is to build GUIs that heavily rely on images and custom skins with ease.  

Reply | Threaded
Open this post in threaded view
|

Re: Ephestos 0.1 released

HilaireFernandes
Le 20/09/2014 22:16, kilon alios a écrit :
> This is 0.1 the first stable release of Ephestos. This release contains the
> following

Cool.
Is using direct Smalltalk language to control the Blender scene a
possible perspective? I mean without going throught an intermediate
Python parsing.
I don't know Blender, so my question may look idiot.

Hilaire

--
Dr. Geo - http://drgeo.eu
iStoa - http://istao.drgeo.eu


Reply | Threaded
Open this post in threaded view
|

Re: Ephestos 0.1 released

kilon.alios
In theory ? yes 

but you would not want to do that

First of all the easiest way to do this, is embed smalltalk inside blender, this is how blender does it with python it embeds cpython 3 and that gives immediately several issues

a) Pharo is not embedable and neither is Squeak , so you cant use Pharo which is bad at least for me.

b) Even if there is a Smalltalk out there than can be embedded, how reliable is it ? Cpython has decades in its back of embedding inside C and C++ applications and loads of them.  

c) Are you ready to maintain any bugs that will arise ? Bare in mind that cpython is deeply hooked inside Blender. This is no small API we talking here around 10k methods at least. Plus you will lose the ability to use any existing blender addon and blender python library and believe me there is tons of them that are useful. 

d) Are you ready to maintain 1.000.000 lines of code because they only way to embed a smalltalk inside blender is to fork Blender, that means that you have to keep up with dozens of commits each day and an extremely active community also you need serious knowledge on all the area of Blender and deep knowledge about the mathematics and physics of 3d graphics. 

e) wait you want to use as a pharo library ? see (c) and (d)

Ephestos is not just about controlling and manipulating blender. Its about taking full advantage of both python and the blender python api and even take advantage of existing addons and existing python libraries. 

The cool thing about Ephestos the fact that is API agnostic , may annoy some people because they dont see API pharo objects , but at the same time it means that if I abandone Ephestos right now it will continue to function without a problem for years even if the API of Blender deeply change. While on the other hand the moment you wrap the C code (embeding or extending Pharo with it) you need to keep up with any change in Blender source and thats is a lot of work. 

The main problem is that Blender is too big to throw away python. The Blender Python API has been developed mostly by a single developer but he is a full time paid developer with over a decade of contributions to the API.

You question is not idiotic at all, its a valid question with some good benefits. I have seen at least one thread talk about lua used in place of python, but it ended up coming down to my above points. Its too much effort for little gain.  

I know that are people that dont want to learn python and the Blender python API or Blender and thats ok for me. I make Ephestos mostly for my needs. But for those that do manage to take the steep learning curve Blender and Ephestos will offer a power and flexibility that no Pharo library can offer at this moment and I dont think this will change any time soon. 

Learning python is very easy, learning the Blender API and Blender takes time.

Please note that you can still do tons of stuff with Ephestos without writing a line of code in python. But you still need to understand Python and Blender API to do useful stuff. 

Ephestos is the blue pill but like for Neo , it comes with a big price ;)

On Sun, Sep 21, 2014 at 1:21 PM, Hilaire <[hidden email]> wrote:
Le 20/09/2014 22:16, kilon alios a écrit :
> This is 0.1 the first stable release of Ephestos. This release contains the
> following

Cool.
Is using direct Smalltalk language to control the Blender scene a
possible perspective? I mean without going throught an intermediate
Python parsing.
I don't know Blender, so my question may look idiot.

Hilaire

--
Dr. Geo - http://drgeo.eu
iStoa - http://istao.drgeo.eu



Reply | Threaded
Open this post in threaded view
|

Re: Ephestos 0.1 released

HilaireFernandes
Le 21/09/2014 13:07, kilon alios a écrit :
> In theory ? yes
>
> but you would not want to do that


Ok. For a small subset of the Python API, I imagine you can write over
Ephestos a Smalltalk wrapper.

The intend is to make it is easier for learner (let's say high school
student) to play with 3D objects in blender (a bit like the DrGeo API to
define a sketch with Smalltalk), it could look like:

|scene|
scene := BlenderScene new.
scene add: (BLSphere centre: 1@2@3 radius: 10).

Does it make sense in your perspective?

Hilaire

--
Dr. Geo - http://drgeo.eu
iStoa - http://istao.drgeo.eu


Reply | Threaded
Open this post in threaded view
|

Re: Ephestos 0.1 released

kilon.alios
yes this is where Ephestos is going. However I wanted first to make sure that the core works as I wanted. 

The goal is not only to offer an easier API to play with for people that dont want to do hardcore 3d graphics but also an easier GUI as well for Blender. Pharo acting as the GUI of Blender.

Actually I already have started the idea, if you get Ephestos you can try this code

cube := Cube new.
cube move: #(1.0 1.0 0.0).

As you may have guessed this creates a cube in Blender and moves to x y z coordinates. 

instead of this:

EphPyParser bpy ops mesh primitive_cube_add:'()';e.
        EphPyParser bpy data objects:'["Cube"]';location:'=(1.0 , 1.0, 0.0)';e.

As you can see it already looks much better.

Of course that class is pure experimental and this is why I have not announced it yet. I will however offer a Pharo API for Blender so you don't need to use python or know blender or know the Blender python API.  

Expect in version 0.2 to have such an API for Blender editor and Blender game engine. It wont be 100% of what I want but it will get there eventually hopefully in version 1.

On Sun, Sep 21, 2014 at 3:39 PM, Hilaire <[hidden email]> wrote:
Le 21/09/2014 13:07, kilon alios a écrit :
> In theory ? yes
>
> but you would not want to do that


Ok. For a small subset of the Python API, I imagine you can write over
Ephestos a Smalltalk wrapper.

The intend is to make it is easier for learner (let's say high school
student) to play with 3D objects in blender (a bit like the DrGeo API to
define a sketch with Smalltalk), it could look like:

|scene|
scene := BlenderScene new.
scene add: (BLSphere centre: 1@2@3 radius: 10).

Does it make sense in your perspective?

Hilaire

--
Dr. Geo - http://drgeo.eu
iStoa - http://istao.drgeo.eu



Reply | Threaded
Open this post in threaded view
|

Re: Ephestos 0.1 released

Ben Coman
In reply to this post by kilon.alios
kilon alios wrote:

>
> This is 0.1 the first stable release of Ephestos. This release
> contains the following
>
> -a socket client bridge for sending and receiving messages from
> Blender which acts as a socket server
>
> a sendMessage: message to send python command as string to Blender to
> be executed
>
> a python parser that allows the pharo syntax to be used to parse to a
> python command for simple things like calling instance and class
> method and assigning class and instance variables
>
> a getValue: message for reading python values from variables
>
> support for triggering the pharo debugger on python error
>
> support for sending multiple lines of python code in a single message,
> for defining python classes and much more.
>
> A video demonstration can be found here only for the new features:
>
> https://www.youtube.com/watch?v=XPGDQc5LUvE&feature=youtu.be 
> <https://www.youtube.com/watch?v=XPGDQc5LUvE&feature=youtu.be>
>
>
> Documentation is here , its outdated because it does not contain the
> new features but will update in a few days
> --> https://www.gitbook.io/book/kilon/ephestos
>
>
> With release 0.1 the core features of Ephestos have been finalised. It
> now can be used for full controlling Blender.  The next step is to
> refine getting values from Blender so they are automagically converted
> from strings to Pharo data types.
>
>
> I also will start working on a customised GUI and creating an API for
> it, the goal is to build GUIs that heavily rely on images and custom
> skins with ease.  
>
Great to hear of your progress.  I'm not ready to dive into learning
Blender internals, but with the GUI this would be very attractive to
play with (and then its likely I stop get sucked into the internals).  
And even though I don't need a Python bridge right-now, its really nice
to know something is there for when I do.

cheers -ben

Reply | Threaded
Open this post in threaded view
|

Re: Ephestos 0.1 released

kilon.alios
yes it comes down to whether 3d graphics and 2d graphics is something that you want to do. Obviously if this an area that does not interest you Ephestos is useless for you. 

The GUI will come, but as always these things take a lot of time and my free time is limited. I am also interested into adding that GUI also Pharo functionality so Pharo becomes one with Blender. My goals is to create a unified enviroment that is easy to use, pleasant to the eye but also flexible and very powerful with focus on 3d and 3d graphics. 

Something a kid would want to use but also a professional artist. If I go very far with it I could even see myself selling it as a commercial product while keeping it open source (Blender is GPL).  Its definitely something I would love to do professionally at some point. But for the time being I will keep adding stuff till it get hard to resist ;) 

On Sun, Sep 21, 2014 at 4:50 PM, Ben Coman <[hidden email]> wrote:
kilon alios wrote:

This is 0.1 the first stable release of Ephestos. This release contains the following

-a socket client bridge for sending and receiving messages from Blender which acts as a socket server

a sendMessage: message to send python command as string to Blender to be executed

a python parser that allows the pharo syntax to be used to parse to a python command for simple things like calling instance and class method and assigning class and instance variables

a getValue: message for reading python values from variables

support for triggering the pharo debugger on python error

support for sending multiple lines of python code in a single message, for defining python classes and much more.

A video demonstration can be found here only for the new features:

https://www.youtube.com/watch?v=XPGDQc5LUvE&feature=youtu.be <https://www.youtube.com/watch?v=XPGDQc5LUvE&feature=youtu.be>


Documentation is here , its outdated because it does not contain the new features but will update in a few days --> https://www.gitbook.io/book/kilon/ephestos


With release 0.1 the core features of Ephestos have been finalised. It now can be used for full controlling Blender.  The next step is to refine getting values from Blender so they are automagically converted from strings to Pharo data types.

I also will start working on a customised GUI and creating an API for it, the goal is to build GUIs that heavily rely on images and custom skins with ease. 
Great to hear of your progress.  I'm not ready to dive into learning Blender internals, but with the GUI this would be very attractive to play with (and then its likely I stop get sucked into the internals).  And even though I don't need a Python bridge right-now, its really nice to know something is there for when I do.

cheers -ben


Reply | Threaded
Open this post in threaded view
|

Re: Ephestos 0.1 released

HilaireFernandes
In reply to this post by kilon.alios
Le 21/09/2014 15:13, kilon alios a écrit :
> yes this is where Ephestos is going. However I wanted first to make sure
> that the core works as I wanted.

Cool, keep going!

--
Dr. Geo - http://drgeo.eu
iStoa - http://istao.drgeo.eu