Published by Suisei at 14/03/2022 à 20h15
As mentioned in the in review 2021, today I'm going to talk more about the progress of the Peguy project.
We're going to talk about 3D and programming, so this is a news that will be relatively technical.
The application Péguy
As said before, I haven't made much progress on the application itself since the last time.
It has been enriched with a few more effects and new possibilities for modeling shapes. But not much more.
I did a lot of research on the different methods of automatic texturing on a sphere.
Going from a 2D image to a spherical volume is not an easy task!
I added the possibility to define holes in the textures.
The revolution function: it allows to draw a 3D object from a 2D curve by simple rotation around an axis.
Any 3D modeling software worthy of the name must offer it.
Extrusion from a 2D shape. This is also a must-have feature.
New primitives (basic geometric shapes).
A little donut for the road?
On the other hand, I did a lot of research and also developed small independent tools that will be interesting to integrate into the application in the future.
FreeCAD and the Python language
In January 2021, my dad decided to learn 3D modeling so that he could model small mechanical parts to be manufactured by online 3D printing services.
The idea was to be able to replace small broken or lost parts.
The software he started using for this is called FreeCAD.
It is a free and open source computer-aided design (CAD) software.
It is a technical software. It is designed to model mechanical parts, architecture, but not really to make art (video game, animation, illustration... all that).
For my comics, I'm interested in using 3D for architectural scenery or vehicles, I thought it would be interesting to take a look at it...
Just out of curiosity...
While doing my research, I discovered that the software was customizable with scripts or plugins written with the Python language, like many 3D softwares.
But the most interesting thing is that FreeCAD functions can be called from an independent Python program without opening FreeCAD!
I really found this very interesting, so I rushed to do some tests.
This is one of my very first tests.
It was sculpted using the boolean principle.
Basically, the idea is to create shapes by adding or subtracting simpler ones from each other or by taking the intersection of 2 shapes.
This little diagram found on Wikipedia is more telling than long words.
Until now I had never really gotten serious about 3D modeling because the software I had studied up until then was more for art. When I wanted to model objects or structures whose geometry I knew with mathematical accuracy, I was very frustrated by the imprecision of these software.
The problem was that they didn't allow you to express shapes by entering custom mathematical formulas and you had to struggle to do things freehand that could have been quick and easy with a little math.
The idea of making 3D generation programs where I am not hindered by a user interface quickly became apparent. I had started to study the subject with Java.
Since I discovered FreeCAD, I have developed lots and lots of programs with it.
Sets and ships for the Star Trek webtoon project.
Robots and planetoids.
The other revelation of the year in 3D modeling was... 2D vector drawing!
Yes! Who would have thought it? A 2D tool!
In fact, I quickly realized that if I just entered mathematical formulas and numbers in my head or with 2 or 3 calculations on a corner of the table, I would quickly hit a snag.
How to deal with more complex shapes, especially curves?
So I quickly wondered if there was a way to import vector drawing files into a program using FreeCAD.
And the answer is YES :D
In 2020 I took advantage of a promotion to buy the Affinity Designer software, but I wasn't sure how to use it.
Well, since I discovered the possibility of using vector drawing in 3D, I use it all the time. 8D
Now my method is to draw 2D plans of my objects and convert them into 3D objects, either by extrusion or by revolution, either with FreeCAD or with Blender.
The wing pattern of the Klingon bird-of-prey is a typical example of what I couldn't do with just lines of code.
The door of the sickbay of Deep Space Nine was modeled on the same principle but with Blender instead of FreeCAD and Python.
This is the tournament arena in Dragon Ball Multiverse.
I modeled its main structure by applying a revolution from a curve I drew in Affinity Designer.
Small independent applications
Well, coding everything by hand and declaring one by one all the vector files imports can sometimes be laborious, and above all, it's perfectly unusable for the general public.
So, I started to code little tools that allow me to make the link between my vector drawing files and my Python programs.
Eventually, the idea is to combine my FreeCAD programs with my interfaces developped with web technologies.
This little tool allows me to load a vector file and to associate to each 2D element parameters that allow to define which transformation will convert it into 3D.
As it is, it generates a Python program. Then, I copy and paste this program to run it and generate a 3D object.
In the Péguy project there are 2 ideas that I wanted to develop.
The first, an interface accessible to the general public that can be used like a Lego set.
The second, a graphical programming interface to create more complex and dynamic objects reserved for more experienced users.
At first I was planning to use the event scheduling system of RPG Maker as a model.
But after some research and some exchanges with friends who also practice 3D, I discovered that there was software based on this principle: a graphical programming language in the form of nodes that can generate complex scenes in an automated way with great freedom.
The most famous in the field is called Houdini and is widely used to generate special effects in movies among others.
There is a free version to learn how to use it, but as soon as you want to use it for commercial projects, the price stings!
It's a product that is aimed at companies and not at small independent artists.
I will surely study it out of curiosity.
While wandering around itch.io I found a small open source tool based on the same principle but much simpler.
This software is called Sceelix.
This example is provided directly with the software.
Well, it doesn't seem to be really maintained anymore and it's a bit broken.
I only managed to run it on a Windows 10 virtual machine and another Ubuntu 20 and even then it was a bit buggy.
But on Mac OS X, on other versions of Windows or Linux, it crashed.
In short! It's interesting to study the concept but it seems to me hardly usable as it is.
And then recently, there's good old Blender which has integrated geometry nodes which are based on the same principle.
I haven't looked into it yet, but knowing the node system for materials, the current quality of Blender's interface, and seeing the captures of work done with geometry nodes on the internet, I think it's a powerful tool.
I'll be sure to take a closer look.
Having said that, after a quick exploration, it still seems to lack some existing node types in the 2 previous tools, namely if blocks or for loops. When you're used to programming for a long time like me, having to do without them and tinkering with them to be able to emulate them quickly overloads the interface with the number of nodes.
In summary, there are two possible approaches: either the nodal model which is currently the most commonly used in 3D software, or the RPG Maker approach which looks more like a written program and has less risk of becoming messy and unreadable.
If you have an opinion on the subject, I am all ears.
In absolute terms, since its last versions released during the year 2021, Blender is now able to do most of the things I'm looking to do with the Péguy project, at least for the 3D part (not for the 2D part).
Most of them...
I've been training intensively in Blender for about 5 months now and there are shapes that I could do with my Python programs that I still can't do in Blender, even with plugins.
3D CAD tools still have some little tricks in terms of pure modeling that artistic 3D softwares don't have yet. So, for my own use, Blender would do the trick by combining it from time to time with Affinity Designer, FreeCAD and some Python scripts.
But doing all this with general 3D software like Blender is devilishly technical and is clearly not accessible to everyone.
If you're not a bit of a mathematician, mastering raster and other manga effects in general 3D software is not an option. And I know that many comic artists are alergic to math and technique. :p
Black and white and color comic book renderings.
And to do this, nodes, with sub-nodes and sub-sub-nodes...
This gives me a more precise idea of how to orientate the Péguy project: to specialize it for comics, or even illustration, and make it accessible to non-technical profiles.
Now that I have a clearer idea of what I am going to do, here is how I plan to do it.
The first step will be to make a first version only with the 2D features (including the manga effects you already know).
I found that the vector drawing really helped me so I think it's important to make it a central part of the project.
Moreover, if nodal languages are multiplying to do procedural 3D, I have not yet found an equivalent in vector drawing. I think it could be really interesting to explore this idea.
The 3D will come in a second time.
The overall philosophy will be to ensure accessibility to non-technical profiles, that it is a lego game for them, but also to offer a little more to the more comfortable users.
Well, I think I've covered it all the subject.
I realize that I've explored a lot of things over the past year when it comes to 3D.
It's a fascinating subject. :D
Okay! I'll stop bothering you.
I wish you a nice week and see you soon!