I do have some great news I solved the problem with blender operators that means I now have full access to the whole API of blender. Everything in Blender API is basically operators and properties.There are still limitations to be solved of course. First that I will tackle is how to communicate data from Blender back to Pharo.
Also I have added example code for people to look at. Just pull from my repo here http://www.smalltalkhub.com/#!/~kilon/Ephestos/ Ephestos is not something I am making for others to use, its primarily for my needs. Because I am very interested in interacting and integrating other Blender addons in my workflow I want to keep the Pharo API as close to BPY as possible. This will make it easy for me to port BPY code to pharo and talk to existing Blender addons. Blender addons are extremely important they implement tons of new functionality for Blender. A cube is not a separate object in BPY , a cube is basically a mesh object. So BPYMesh would make more sense. But in BPY its really a BPYObject. Additional I can be lazy and avoid documenting stuff since translating python calls to pharo is dead easy. Python has a very simple syntax, not as simple as Pharo but quite close. So its easy to go to Blender wiki BPY API and find all the information you want instead of me going through the pain of rewriting this huge documentation. There are also a lot of tutorials about making blender addons with python online, there is no way I can compete with that . So in the end if you really want to take advantage of Blender learning python and the blender api is mandatory. Pretty much every major 3d app uses Python and Python is a very popular language so there is nothing to lose by learning it. I would not put too much faith to me mapping alone the huge BPY API, the operators alone are 1500 or so I have been told, properties must be at least double that amount. Translating all that to Pharo objects is just an insane amount of work unless I find a cleaver way around it with some pharo parsing but still too much work for little gain. But I will map some basic stuff to decrease the need of writing python code. About Atlas here is the repo that I am going to post the code https://github.com/kilon/pyAtlas For now I work on Ephestos and when I am happy with the progress I made with it I will port it to Atlas and make an announcement here. Its basically the same code minus the Blender stuff. PS: It may also make some of you happy that I plan to expand Ephestos to include besides BPY also BGE. BGE stand for Blender Game Engine , its a game engine offered by Blender that excels at any kind of interacting graphics, that means that you will have access to a very powerful game engine and a general engine for 3d interactive applications. BGE is a lower priority , but it should be easy to implement once the big limitations of Ephestos have been solved. More info about BGE can be found here http://wiki.blender.org/index.php/Doc:2.6/Manual you can find finished games made with BGE here http://blenderartists.org/forum/forumdisplay.php?39-Finished-Games A very good example is this http://deadcyborg.com/ On Thu, Jul 17, 2014 at 8:31 PM, Hernán Morales Durand < [email protected]> wrote: > > 2014-07-16 12:31 GMT-03:00 kilon alios <[email protected]>: > > yes the one I am considering as strong candidate is >> >> (BPYObjects at: 'Cube' ) location : #( 0 0 0 ) >> >> > Why not BPYCube? > > > >> I would try to simplify bpy ( Blender Python API) and make it a lot more >> pharo friendly. >> >> However plain python string will be kept as well, so you can copy paste >> existing python code. >> >> One thing to note here is that Blender python addons are a huge deal. >> Python addons are actually full blown python apps. Blender python is >> basically a regular cpython 3 which is by far the most popular python >> implementation , meaning not only that you can use blender api object but >> any python library you can find. As a pharo developer you also can tap into >> this power via Ephestos. >> >> something that I forgot to mention in the video, in the github repo there >> is a rawcode.py. This is a strip down version of the Blender code that will >> separate to its own project that I am naming "Atlas". >> >> The goal of Atlas, is to create a two way communication socket bridge >> between cpython (most popular python implementation) and pharo. Very >> similar to Ephestos but you will no longer need Blender. That means that >> pharo coders will be able to use python libraries from inside pharo and >> even mix python with pharo code. So you could make part of your application >> in python and part in pharo and still function as a single application. >> >> > I am interested in Atlas. Do you have a link? > > > >> If I find the time I would like to expand Atlas to other languages too, >> so that pharo can take advantage of any library written in any language >> without the trouble of FFIs. But most likely I will stick to python and let >> others do the work. >> >> But even with just python as you imagine python is extremely popular and >> quite friendly with the pharo way of thinking. Meaning that in python its >> all about live objects too. Pharo will be able to tap into thousands of >> powerful python libraries. >> >> I reserve some doubts to the amount of problems I will have to face to >> accomplish this and I am no way claiming it wont be a long process but so >> far through these very first steps the idea seems to go well in practice. >> >> >> On Wed, Jul 16, 2014 at 5:55 PM, Damien Cassou <[email protected]> >> wrote: >> >>> On Tue, Jul 15, 2014 at 11:09 PM, kilon alios <[email protected]> >>> wrote: >>> > >>> > The goal is to expose Blender coders to the power of Pharo and Pharo >>> to the >>> > power of Blender. As you can imagine the potential is huge but I >>> rather talk >>> > what Ephestos can do already. >>> >>> That's great kilon! I can't wait to see how far you could go with >>> that. I hope you plan to use Pharo syntax instead of plain string for >>> the messages. A message like this: >>> >>> "bpy.data.objects["Cube"].location = (0.0, 0.0, 0.0)" >>> >>> could be written like that: >>> >>> (EphestosMessage bpy data objects: 'Cube') location: (EphestosLocation >>> x: 0 y: 0 z: 0) >>> >>> or something similar >>> >>> -- >>> Damien Cassou >>> http://damiencassou.seasidehosting.st >>> >>> "Success is the ability to go from one failure to another without >>> losing enthusiasm." >>> Winston Churchill >>> >>> >> >
