﻿<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://wiki.blender.jp/index.php?action=history&amp;feed=atom&amp;title=Dev%3ARef%2FGoogleSummerOfCode%2F2005%2FSketch_Based_Modeling</id>
	<title>Dev:Ref/GoogleSummerOfCode/2005/Sketch Based Modeling - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.blender.jp/index.php?action=history&amp;feed=atom&amp;title=Dev%3ARef%2FGoogleSummerOfCode%2F2005%2FSketch_Based_Modeling"/>
	<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=Dev:Ref/GoogleSummerOfCode/2005/Sketch_Based_Modeling&amp;action=history"/>
	<updated>2026-08-20T09:32:43Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>https://wiki.blender.jp/index.php?title=Dev:Ref/GoogleSummerOfCode/2005/Sketch_Based_Modeling&amp;diff=41970&amp;oldid=prev</id>
		<title>Yamyam: 1版 をインポートしました</title>
		<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=Dev:Ref/GoogleSummerOfCode/2005/Sketch_Based_Modeling&amp;diff=41970&amp;oldid=prev"/>
		<updated>2018-06-28T17:45:17Z</updated>

		<summary type="html">&lt;p&gt;1版 をインポートしました&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ja&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← 古い版&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;2018年6月28日 (木) 17:45時点における版&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ja&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(相違点なし)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Yamyam</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.blender.jp/index.php?title=Dev:Ref/GoogleSummerOfCode/2005/Sketch_Based_Modeling&amp;diff=41969&amp;oldid=prev</id>
		<title>wiki&gt;Mindrones: moved Dev:Ref/GSoC/2005/Sketch Based Modeling to Dev:Ref/GoogleSummerOfCode/2005/Sketch Based Modeling</title>
		<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=Dev:Ref/GoogleSummerOfCode/2005/Sketch_Based_Modeling&amp;diff=41969&amp;oldid=prev"/>
		<updated>2010-10-24T08:36:08Z</updated>

		<summary type="html">&lt;p&gt;moved &lt;a href=&quot;/Dev:Ref/GSoC/2005/Sketch_Based_Modeling&quot; class=&quot;mw-redirect&quot; title=&quot;Dev:Ref/GSoC/2005/Sketch Based Modeling&quot;&gt;Dev:Ref/GSoC/2005/Sketch Based Modeling&lt;/a&gt; to &lt;a href=&quot;/Dev:Ref/GoogleSummerOfCode/2005/Sketch_Based_Modeling&quot; title=&quot;Dev:Ref/GoogleSummerOfCode/2005/Sketch Based Modeling&quot;&gt;Dev:Ref/GoogleSummerOfCode/2005/Sketch Based Modeling&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
Welcome to my [[http://code.google.com/summerofcode.html|SoC]]|blog|at|Blender's|wiki.|If|want|to|follow|my|progress,|you|should|probably|be|reading|this|bottom|to|top.|Just|a|suggestion.|Also,|start|by|following|the|link|to|the|original,|[[http://www.ics.uci.edu/~pablo/files/summer-of-code.txt|accepted|proposal]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BACK AND FORTH - 26 Jul 2005==&lt;br /&gt;
Following my (flowing) design document, I added a &amp;quot;Sketching mode&amp;quot; to View3D. So cool to see your changes work! Even added an icon, modified menus, etc. Well, things have changed and now there's no need for that mode. I'm working on a Sketch object now, as Ton suggested. The good thing is that thanks to my CVS problems, I didn't commit the changes. The bad is that SIGGRAPH is coming close, and I'm not in shape at all... Well, more tomorrow.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== DESIGN DOCUMENT - 23 Jul 2005==&lt;br /&gt;
Here is the design document for my sketch-based modeling project in&lt;br /&gt;
Blender. This is an evolving document. Please come back for&lt;br /&gt;
updates. Comments and constructive criticism are always welcome&lt;br /&gt;
(I know, figures would help; I'll add them ASAP).&lt;br /&gt;
&lt;br /&gt;
=== 1- Introduction. What to expect.===&lt;br /&gt;
A simplified edition mode that can be used with Tablet PCs and similar&lt;br /&gt;
pen-based devices. Of course, the mouse could be also used, but only one&lt;br /&gt;
button will be useful (that can be also helpful for Macs and other&lt;br /&gt;
one-button mouse users). The limited nature of this user interface&lt;br /&gt;
presents the need for:&lt;br /&gt;
*Reduced sketch-based edition functionality&lt;br /&gt;
*Minimum set of interface elements&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The first point represents the restrictions imposed by the sketching interface:&lt;br /&gt;
It is impossible to offer the same functionality that we obtain with a&lt;br /&gt;
more complex interface while still keeping the system simple. This&lt;br /&gt;
results in our modeling scheme, where the user draws a wireframe model&lt;br /&gt;
of the object, and the system completes the job by generating the&lt;br /&gt;
surface indicated by the wireframe. &lt;br /&gt;
&lt;br /&gt;
Second, given that the focus of the system is on simplicity and ease of&lt;br /&gt;
use, as few interface elements as possible should be used. Only two or&lt;br /&gt;
three buttons should be necessary to change the interpretation of the&lt;br /&gt;
movements of the mouse, whether it is line drawing, model rotation or&lt;br /&gt;
model edition. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Finally, in order to modify an existing model, some properties of&lt;br /&gt;
edges and vertices in the wireframe model can be edited. This should be&lt;br /&gt;
offered to the user in the form of a floating window at selection&lt;br /&gt;
time. Normals and stiffness coefficients are among the parameters to be&lt;br /&gt;
considered. --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== 2- Workflow. How does it work?===&lt;br /&gt;
When using he sketching system, the user will focus on creating a&lt;br /&gt;
wireframe model, or network of curves, representing the object to be&lt;br /&gt;
created. To do this, the current window must be a 3D view, and the new&lt;br /&gt;
&amp;quot;Sketching mode&amp;quot; must be in use. In order to simplify the experience,&lt;br /&gt;
when in Sketching mode, every model edition takes place within a&lt;br /&gt;
bounding sphere around the 3D cursor. &lt;br /&gt;
&lt;br /&gt;
Following the Blender tradition, modeling is an iterative process with&lt;br /&gt;
three main steps: Creation/edition of the network of curves and its&lt;br /&gt;
parameters, generation of the surface and visualization of the&lt;br /&gt;
model.&lt;br /&gt;
&amp;lt;!-- This is outlined in Figure 1. &lt;br /&gt;
 &amp;lt;center&amp;gt; &amp;lt;img src=&amp;quot;%ATTACHURLPATH%/workflow.png&amp;quot; alt=&amp;quot;Workflow&amp;quot; /&amp;gt; &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;Figure 1: Workflow of a sketching session. &amp;lt;/center&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the window header there will be three mutually exclusive buttons that&lt;br /&gt;
alternate between the three sketching submodes: Sketch creation,&lt;br /&gt;
rotation and sketch edition. Depending on the current submode, the&lt;br /&gt;
system interprets the movement of the pen in different ways. Next, let's&lt;br /&gt;
see this in detail. &lt;br /&gt;
&lt;br /&gt;
==== 2.1- Sketch creation mode====&lt;br /&gt;
Curves drawn in this mode can be of three types. Type A curves don't&lt;br /&gt;
connect any points of the sketch. They are assumed to be in a plane&lt;br /&gt;
parallel to the screen, and have a depth determined by the user. The&lt;br /&gt;
depth is indicated through a sliding bar in the window header, where the&lt;br /&gt;
center of the bar represents the depth of the 3D cursor, and the&lt;br /&gt;
extremes are the closest and furthest depth of the bounding sphere&lt;br /&gt;
around the cursor.&lt;br /&gt;
&lt;br /&gt;
Type B lines start or end in an existing line of the sketch, but one of&lt;br /&gt;
their extremes is free. These curves receive the depth of the point they&lt;br /&gt;
are connected to. Only certain points in an existing curve can be used&lt;br /&gt;
as an endpoint of a new curve, and they are called junction points, or&lt;br /&gt;
more shortly, junctions. We will see these later.&lt;br /&gt;
&lt;br /&gt;
Type C curves connect two existing points of the sketch. The depth&lt;br /&gt;
of the curve (of which we only know its 2D projection and the&lt;br /&gt;
depth of its endpoints) is calculated minimizing the curvature as&lt;br /&gt;
explained in the reference paper&lt;br /&gt;
(http://www.ics.uci.edu/~pablo/articles/EGsketch.pdf).&lt;br /&gt;
&lt;br /&gt;
We mentioned junction points without explaining what they mean. A&lt;br /&gt;
junction point is a point in a curve where other curves can start or&lt;br /&gt;
end. Initially, only curve endpoints are junctions. The user can create&lt;br /&gt;
new junctions by simply pointing (single, non dragging click) at the&lt;br /&gt;
desired position of the curve. A dragged click is considered a line&lt;br /&gt;
drawing.&lt;br /&gt;
&lt;br /&gt;
==== 2.2- Sketch rotation mode====&lt;br /&gt;
Few useful networks of curves can be drawn completely without changing&lt;br /&gt;
the point of view. Thanks to the simplifying assumtion that all sketches&lt;br /&gt;
lie within a bounding sphere around the 3D cursor, rotations are simple&lt;br /&gt;
within this framework. When in rotation mode, any pen dragging will&lt;br /&gt;
cause a spherical rotation of the sketch, facilitating the inspection&lt;br /&gt;
and further modification of the model.&lt;br /&gt;
&lt;br /&gt;
==== 2.3- Sketch edition mode====&lt;br /&gt;
Finally, no modeling system would be complete without the possibility of&lt;br /&gt;
edition. In our case, edition can be performed on vertices and&lt;br /&gt;
curves. First, the user selects a vertex or a curve by clicking on&lt;br /&gt;
them. Next, the user draws a line. If the selection is a vertex, the&lt;br /&gt;
line represents the displacement of the vertex in a plane parallel to&lt;br /&gt;
the screen, much like current vertex translation. If the selection is a&lt;br /&gt;
curve, the line represents the new curve position. It is to be decided&lt;br /&gt;
whether moving a curve should also move its endpoints or not.&lt;br /&gt;
&lt;br /&gt;
=== 3- Implementation. What's done? What's to be done?===&lt;br /&gt;
==== 3.1- Tasks====&lt;br /&gt;
*Design of data structure representing network of curves.&lt;br /&gt;
*Creation and edition of a network of curves.&lt;br /&gt;
*Automatic computation of normals at vertices.&lt;br /&gt;
*Propagation of normals along curves using SLERP.&lt;br /&gt;
*Surface generation and conversion to Blender mesh.&lt;br /&gt;
&lt;br /&gt;
==== 3.2- Existing code====&lt;br /&gt;
Currently, I have code from a prototype to draw the&lt;br /&gt;
network of curves. This needs to be adapted to Blender. Similarly, the&lt;br /&gt;
skining (surface generation) algorithm is also written, although I'm&lt;br /&gt;
honestly not proud of it, and I would rewrite it completely for&lt;br /&gt;
integration. Please refer to the paper below for details on this&lt;br /&gt;
algorithm.&lt;br /&gt;
&lt;br /&gt;
==== 3.3- Existing Blender code====&lt;br /&gt;
The tasks will involve creating a new mode for the 3D window, a new&lt;br /&gt;
fundamental data structure for the network of curves, and integrating&lt;br /&gt;
the surface generation code, that takes a network of curves into a mesh.&lt;br /&gt;
Therefore, my work will be mostly concentrated on the following parts of the&lt;br /&gt;
./source/blender subtree (besides additional newly added files):&lt;br /&gt;
*src/header_view3d.c ''' makesdna/DNA_'''.h&lt;br /&gt;
*blenkernel/intern/sketch.c&lt;br /&gt;
*blenloader/intern/write(and read)file.c&lt;br /&gt;
*src/drawview.c, src/drawobject.c&lt;br /&gt;
*etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4- Other ideas.===&lt;br /&gt;
Again, for further details, please refer to&lt;br /&gt;
[[http://www.ics.uci.edu/~pablo/articles/EGsketch.pdf|this|paper]]&lt;br /&gt;
describing the fundamentals of the prototype that I attempt to improve&lt;br /&gt;
here. &lt;br /&gt;
&lt;br /&gt;
Time permitting, I think it should be feasible to prepare a video&lt;br /&gt;
tutorial as an introduction to the sketching system I'm building. It&lt;br /&gt;
would be the perfect complement to a modeling tool that facilitates the&lt;br /&gt;
first steps with Blender.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== STATUS - 18 Jul 2005==&lt;br /&gt;
&lt;br /&gt;
It's been a while and I still don't have anything to show. Well, that's written in my proposal, if you check the link bellow. My progress is in two fronts: Learning Blender as a user, and re-thinking the way the sketching would be done with my system.&lt;br /&gt;
&lt;br /&gt;
In the first front, I'd like to thank the creators of the video tutorials for their time and effort. They're really great, and if you haven't seen them yet, go ahead and check them out. They're worth your time.&lt;br /&gt;
&lt;br /&gt;
Second, the design of the sketching. Well, different people understand different things when they hear the word &amp;quot;sketching&amp;quot;. On common approach to this problem is habing the user draw a 2D wireframe model, and the program reconstructs it. Although this is the most appealing to most people, it's limited in its possibilities (for example, there is no efficient way of calculating the face models in less than exponential time, for models with handles). The second approach, which is the one I'm taking, is sort of a hybrid between traditional 3D modeling and the 2D approach. You model everything by drawing wires, but these are curves in 3D. This way, rotations are allowed to draw different parts of the model, and some benefits of using a computer (as opposed to a piece of paper) can be exploited. The problem with this approach is that the drawing process is not as natural as with the pure 2D way, but I expect this not to be such a burden. Once I have it running, we'll be able to tell.&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
== LET'S GET STARTED - 03 Jul 2005==&lt;br /&gt;
&lt;br /&gt;
Hello everyone, I will post my progress developing my Blender SoC project here. Meanwhile, you can check [[http://www.ics.uci.edu/~pablo/files/summer-of-code.txt my proposal here]].&lt;/div&gt;</summary>
		<author><name>wiki&gt;Mindrones</name></author>
		
	</entry>
</feed>