[Soc-2017-dev] Weekly Report #10 - Silhouette Operator

Sebastian Witt W.Basti at gmx.de
Fri Aug 4 19:39:04 CEST 2017


**


    *Weekly Report #10 - Silhouette Operator*

*

In the 10th week I continued to develop the transition method to connect 
a drawn Silhouette to existing geometry.

Turns out, this is a real challenge. I stumbled over a couple of problems.

But first, let’s talk about


What has been done in this week:

  *

    Implement an algorithm to calculate the edge-ring which is
    separating the vertices which need to be cut from the ones which
    need to stay.

  *

    Ordering of those rings

  *

    Generate bounding-boxes for the rings

  *

    Find intersecting rings which are the result of cross-node holes

  *

    Calculate the shared parts of those rings


Problems, Questions, Challenges

First things first: After this week i can say that the task to connect 
the parts is harder than expected. I am now pretty sure I will not be 
able to deliver a bug-free, tested, documented operator with the 
transition option within the GSoC timeframe. It is more complex than 
expected because of a couple of reasons:


The Mesh Problem

Currently I have used almost completely the basic mesh structure of 
blender. Within sculpting mode everything is handled by manipulating the 
mesh of the sculpt. Everything, with exception of the dyntopo mode, is 
limited to non-destructive/non-constructive mesh edits. Vertices are 
only deformed.

With the silhouette operator I need to create new 
vertices/edges/loops/polys (v/e/l/p). Till now this has been no problem 
since just appending new data to the v/e/l/p arrays is easy.

Maybe it is just because I misunderstand the customdata structure, but 
deleting and rearranging the v/e/l/p is more problematic. Additional 
data like vertex color, shape keys etc. is dependent on consistent 
v/e/l/p memory.

There is almost no functions in the codebase to manipulate the base mesh 
structure.

I started creating a remove vertices function which is supposed to 
delete vertices and connected edges etc. adjacent to it. I started to 
create redirection tables to redirect all the pointers. Polys -> Loops 
-> Edges -> Vertices. Even though this is possible, it breaks references 
to it from other sources. I postponed this task and wanted to get some 
feedback on these questions first.


The Orthographic Matrix

Earlier this week i sent a question in this mailing list.

How do i get the orthographic projection matrix in perspective mode?

I still don’t know how to do it, so feel free to have a look at it!

What is the time-plan?

Besides the bigger problems like the mesh problem the whole task has 
several challenges. Most of which i know how to tackle but need a lot of 
time. A random number of arbitrary shaped intersections between random 
shapes with various pixel-densities need to be transitioned.

It is hard to say, but my optimistic guess is:

If there is a good method for the mesh problem, I can get a running 
version with transitions in 3 weeks from now.

Therefore there will be almost no time for testing, bug fixing or 
documentation.


I think it is important to discuss now, so let me know any thoughts on this!


Besides this, ErickBlender made a great video demonstrating the use of 
the silhouette operator! I think it shows very well how the operator is 
intended to be used. Generating a quick foundation for later refinement 
with the other sculpting tools.

So have a look:

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


As always, have a great weekend!


Sebastian Witt

*

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.blender.org/pipermail/soc-2017-dev/attachments/20170804/89a36305/attachment.htm 


More information about the Soc-2017-dev mailing list