[Bf-committers] blender as ui for game engine

Campbell Barton ideasman42 at gmail.com
Fri Jan 22 07:49:03 CET 2016

On Fri, Jan 22, 2016 at 4:34 PM, Owen Hogarth II <gurenchan at gmail.com> wrote:
> Before learning c I was most productive with java so I can understand also
> my second platform after linux is android which mainly uses java.
> How much easier would it have been to just define a JNI interface to
> blender's c DNA/ RNA data structures and deal with those exclusively
> instead of generating .class files from blenders source.
> All of these issues are hinting at the root issue which blender is built on
> c, it's core but it's been a bit neglected and now nobody wants to go into
> the basement and clean out the cobwebs. Like you I understand how hard it
> will be, i've been in blender c code base. It needs some work.

What part of Blender's C core is neglected exactly?

> I do believe that the best option is to turn the core of blender into a
> library but to do that there's a lot of unwinding and a proper interface
> that needs to be created. Something that doesn't break all that's on top,
> think about it like renovating the interior of a building while the outside
> stays the same. Although I really don't think it needs to take years unless
> it falls into some committe where a bunch of people are arguing over what
> to implement instead of just doing it. Sure it might take some time but
> years, I doubt that.

Turning Blender into a library can mean many different things,
technically - when you build Blender as a Python module - this is a
library (builds into `bpy.so` which is loaded dynamically).
This is managed through some minor changes to the build and is kept as
a build option for Python developers who find it handy.

However the purpose of the "Blender" project is to:
 "build a free and open source complete 3D creation pipeline for
artists and small teams."
see: https://www.blender.org/about/

Its interesting to experiment using Blender as middle-ware for
different tasks, we're not looking to prevent you from trying this.

But *expecting* this will be accepted into master isn't reasonable
either, that means we have to maintain public/private headers, deal
with ABI breakages and generally having to support a new set of users
(developers using the library).

> That's why I sent this email out to the group to see how many people would
> be willing to support me while I did this but the response seems less than
> luke warm, although I might be totally wrong.

As far as I can see the response just shows other developers would try
solve this differently.

> Best,
> Owen
> On Fri, Jan 22, 2016 at 7:03 AM, homac <homac at strace.org> wrote:
>> Yes, I can! :D
>> 1. I like coding.
>> 2. I was looking for a library which reads .blend in Java without
>>     crashing, provides access to materials, animations, lighting etc.
>>     and has no dependencies on other libraries/game engines.
>> 3. I was naive enough to think that it will be an easy task.
>>     But I stuck to my plan and made it work.
>> BTW: There have been discussions on a "Blender Plugin System" earlier
>> (which is basically what you want, if I read you correctly). From my
>> point of view, the baseline of this discussion is, that it is a lot of
>> work and has multiple side-effects and therefore takes many years. Users
>> will not get aware of the whole effort spend on the plugin system until
>> the first thirdparty plugins appear which have features not available
>> with python scripts or just better performance. But they will see, that
>> progress of other projects slows down instead. Thus, as long as there
>> are no trustworthy, reliable, experienced volunteers, who take the
>> responsibility to work on it in cooperation with devs of the respective
>> Blender submodules, for at least a couple of years, then there will be
>> no plugin system.
>> Again, that is my personal opinion!
>> But a less intrusive solution to this is of course a C library for
>> .blend files. Because, Blender's clipboard functionality (CTRL+C/CTRL+V)
>> uses a .blend file as well. I'm not familiar with RNA, but I assume it
>> is possible to trigger CTRL-C from python and then run an external
>> program to process the data to override objects with the results
>> afterwards. That is a basically a loosely coupled plugin (even though it
>> runs in its own process).
>> There are C libraries out there (e.g. assimp, don't know how stable) but
>> the best solution would be to take the original source code + a proper
>> interface and just link it into a library. (I talked to someone who had
>> the same idea - don't remember his name, unfortunately.)
>> Regards
>>   Holger
>> On 21/01/16 20:33, Owen Hogarth II wrote:
>> > Blender is a massive code base and you've seen a lot of writing your java
>> > .Blend library. I am interested in implementing it, it's more a
>> refactoring
>> > of the core blender c library which seems to put a lot of devs off,
>> > although I do understand that code base is massive.
>> >
>> > I am going to do this project because I am tired of dealing with
>> > proprietary and or closed source software especially as a game dev where
>> > you'll be using a tool and the original devs disappear or just whatever.
>> >
>> > Holger in your emails to the list you made a statement to the effect that
>> > you were getting off into the weeds writing that java .Blend library. Can
>> > you share what was the original project that made you decide to write
>> your
>> > library?
>> >
>> > Best,
>> > Owen
>> >
>> _______________________________________________
>> Bf-committers mailing list
>> Bf-committers at blender.org
>> http://lists.blender.org/mailman/listinfo/bf-committers
> _______________________________________________
> Bf-committers mailing list
> Bf-committers at blender.org
> http://lists.blender.org/mailman/listinfo/bf-committers

- Campbell

More information about the Bf-committers mailing list