[Soc-2016-dev] Weekly Report #03 and #04 - Sculpting Tools

Kairong Jiang cecil.ini.jiang at gmail.com
Sat Jun 18 22:36:00 CEST 2016


Hi all,

I deeply apologize for not sending weekly report last week. I totally
underestimated the workload of these last few weeks of this semester, and I
want to kill myself now for not starting earlier on the project while the
deadlines are still far away.

Nevertheless, after a few days of all-night working (and some classes laid
off), I managed to get over with some course projects and pushed a little
further the silhouette brush. Still the progress is not close to what I
have expected, but I think I'm almost, if not already, over the hardest
part. (And the summer break is almost there!)

I did the following after last weekly report and have some questions to ask:

* I tried to add the Silhouette brush as a brush tool and make it listed in
the brush selecting panel. I haven't code the real execution function yet
but I want to make it "usable" first so that I can know what my code is
doing. However, the buttons on the brush selector page are not generated
separately as I thought. They are generated automatically through
"template_ID_preview" function, which, to my understanding, searches the
"brush" property of Paint and generate one button for each sculpting Brush.
Therefore I need to add the Silhouette brush as a property of Paint. I read
all the DNA, BKE and RNA sources that are related to brush, paint and
sculpting, and I have added new entries in the enums defining sculpting
tool types. But I never figure out where and when the brush data is
generated. After reading lots of code and documents, I think maybe it has
something to do with readfile.c since data is read and linked there, but I
got so many small pieces and wasn't able to get them together. I have been
stuck there for some time and could use some help and explanation.

* As for the functionality of the tool, the first thing is to calculate the
nodes within the stroke. Unlike other sculpting tools, the nodes need
changing can only be known after a stroke is finished (the user releases
the mouse click), and it is not as simple as "finding nodes within a
selected area".

I am considering two ways to do the silhouette brush. The first is, as I
described in my proposal, to draw a line as the new silhouette and deform
one side of the line, and nodes that are on the side of the object are thus
selected to be modified. Another approach is to use it as a normal brush
(with brush size), and the nodes within the brush area are marked. Then we
apply surface change after the stroke. This way node selecting is simpler
but it is harder to apply surface deformation since the chosen area may be
more unpredictable and irregular. I tend to stick to the way proposed, and
I would like to hear Campbell's advice.

The thing is I haven't done much during the first month and it was partly
because of some unexpected accidents but mostly because I didn't put my
focus and attention on the project enough. This shouldn't continue since
there are only two months left and I am at least 2 weeks behind the
schedule, and the final exams are coming. I plan to finish the silhouette
brush by the end of the mid-term evaluation, and I hope Campbell might give
me a pass (。ŏ﹏ŏ).

Next week I shall finish the tool button and node selecting.  I'll also
figure out the practical way to deform the surface, and do the mid-term
evaluation.

Regards and apologies,
Kairong Jiang
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.blender.org/pipermail/soc-2016-dev/attachments/20160619/26d1afe9/attachment.htm 


More information about the Soc-2016-dev mailing list