-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathmodeling-for-animation.html
204 lines (176 loc) · 11.7 KB
/
modeling-for-animation.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no">
<title>Modeling with Animation in Mind ▪ Topology Guides</title>
<!--
<meta name="description" content="You just sculpted a new character concept, retopologized it, and added an armature…but then you move a bone and realize that your topology just doesn’t work as you’d hoped it would. Organic, stretching surfaces such as skin require carefully crafted topology that deforms well in a wide range of poses....">
-->
<meta name="description" content="Guides for 3d Artists">
<meta name="keywords" content="3d modeling, organic, topology, 3d, blender, b3d">
<link rel="canonical" href="http://topologyguides.com/modeling-for-animation">
<meta name="twitter:card" content="summary" />
<meta name="twitter:title" content="Modeling with Animation in Mind" />
<meta name="twitter:description" content="Guides for 3d Artists" />
<meta name="twitter:image" content="http://topologyguides.com" />
<meta name="author" content="">
<link rel="author" href="">
<meta property="og:locale" content="">
<meta property="og:type" content="article">
<meta property="og:title" content="Modeling with Animation in Mind">
<meta property="og:description" content="Guides for 3d Artists">
<meta property="og:url" content="http://topologyguides.com/modeling-for-animation">
<meta property="og:site_name" content="Topology Guides">
<link rel="stylesheet" href="/assets/vendor/normalize-css/normalize.css">
<link rel="stylesheet" href="/assets/css/main.css">
<link rel="shortcut icon" type="image/png" href="/favicon.png">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Oswald:400,400italic,700,700italic, Lora:400,400italic">
<style>
html {
font-family: "Oswald", "Lora", -apple-system, BlinkMacSystemFont, "Helvetica Neue", sans-serif;
}
</style>
<script async src="https://www.googletagmanager.com/gtag/js?id=G-CEG51BDTXT"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-CEG51BDTXT');
</script>
<body>
<div class="wrapper" id="blep">
<header>
<div class="menu">
<div class="logo">
<a href="/">Topology Guides</a>
<br>
<h3 style="margin-top: 0em;">Guides for 3d Artists</h3>
</div>
</div>
<div class="social">
<div class="nav">
<ul>
<li><a href="/">home</a>
<li><a href="/about">about</a>
<li><a href="/encyclopedia">encyclopedia</a>
<li><a href="/archive">archive</a>
</ul>
</div>
<ul>
<li>
<a href="https://github.com/TopologyGuides/topologyguides.github.io" target="_blank" class="smaller">
<span class="icon-github"></span>
</a>
<li>
<a href="/feed.xml" target="_blank">
<span class="icon-rss_feed"></span>
</a>
<li>
<a href="#" onclick="switchTheme()" title="Switch theme?">
<span class="icon-invert_colors" id="theme-switcher"></span>
</a>
</ul>
</div>
</header>
<article class="post">
<div class="post-title-container
no-hero-margin
">
<!--Post hero image source-->
<div class="heading-container ">
<h1>
Modeling with Animation in Mind
</h1>
<div class="post-meta">
<span>27/12/2021</span>
<span>
<a href="/tag/3d modeling">#3d modeling</a>
<a href="/tag/organic">#organic</a>
<a href="/tag/topology">#topology</a>
<a href="/tag/3d">#3d</a>
<a href="/tag/blender">#blender</a>
<a href="/tag/b3d">#b3d</a>
</span>
</div>
</div>
</div>
<p>You just sculpted a new character concept, retopologized it, and added an armature…but then you move a bone and realize that your topology just doesn’t work as you’d hoped it would. Organic, stretching surfaces such as skin require carefully crafted topology that deforms well in a wide range of poses. Accounting for this variability is not an easy task, especially if you’re not skilled in animation or used to working with characters.
<p>So, with this in mind, I’ve prepared a few tips from my own experiences of modeling for animation. With some practice, your topology may be able to work just as well when animated as it does when in a T-pose.
<h3 id="align-faces-with-the-axis-of-rotation">Align Faces with the Axis of Rotation</h3>
<p>First up, face alignment. Aligning edge loops to the axis of animation can prevent faces from distorting and causing unwanted shading artifacts by ensuring that faces stay flat, even in extreme poses. In most cases, your topology will naturally align to the axis of animation. For example, an elbow will naturally have edge loops that flow in the same axis as movement. But paying special attention to how your loops flow can help in some tricky situations.
<p><img src="assets/img/deform_example.gif" alt="deform_example" />
<p>Notice how the faces become non-planar (flat) when they are deformed against the flow of the edge loops. At render, these faces are split into triangles that create an odd ribbed pattern countering the animator’s intent.
<p>Keeping faces flat is the basis of why topology is important in the first place. This is why good topology in-game models is less vital (triangles are almost always flat!), and using n-gons ion modeling can be problematic. The more points you have to work with on a face, the more likely it is that you will have a non-planar surface.
<p><img src="assets/img/horse.png" alt="horse" />
<p>Another tip for organic models is to follow the muscle structures of the deformation point you are modeling. If your topology roughly matches the underlying muscle structure, in most cases, the animated model will push and pull vertices along the same axis of the muscles.
<h3 id="move-problems-to-reduce-artifacts">Move Problems To Reduce Artifacts</h3>
<p>Even the best models have areas that don’t deform well. Sometimes, the key to solving these issues isn’t eliminating them but moving them. For example, 5+ edge poles cannot be completely eliminated from a complex model, but moving them can help significantly reduce the problems poles cause. By the way, you can read more about moving edge poles in our article “<a href="https://topologyguides.com/manipulating-edge-poles">Moving and Manipulating Edge Poles</a>”
<p><img src="assets/img/pole_example.png" alt="pole_example" />
<p>Moving problem topology to areas with less deformation can make issues irrelevant in practical use. Moving an n-gon to a flat surface of your model can make it practically invisible in your final animation. See above how the edge pole is not in the corner of the shark fin? Instead of placing the pole where it naturally would be, the pole is moved out towards a neutral position where it will not interfere with the movement of the fin.
<h3 id="extend-loops-around-the-insertion-point">Extend Loops around the Insertion Point</h3>
<p><img src="assets/img/loop_example.png" alt="loop_example" />
<p>Using extra edge loops in areas with heavy deformation is the easiest way to prepare your model for rigging/animation. In transition areas and muscle insertion points, extending loops past the deformation area into the flat surface of your model can allow joints to deform more naturally and be much easier to weight in rigging. In the case above, the turtle’s fin can now rotate to extreme angles without issues because of the extra loops. Pairing this with moving poles towards flat surfaces can solve many deformation problems.
<p><img src="assets/img/outset_example.gif" alt="outset_example" />
<p>In Blender, you can easily create extra loops around the insertion point of a deformation point by using the outset tool. Select a face loop and press “I” then “O” to create a ring of faces outside the selected faces.
<h3 id="match-density-with-movement-areas">Match Density with Movement Areas</h3>
<p>If polygon counts are an issue, modeling deforming areas of your model (e.g., a character model’s face) with a higher density than non-deforming areas can help to reduce polygon counts without sacrificing good topology. For example, using <a href="https://topologyguides.com/loop-reduction">edge loop reduction techniques</a>, you can add density to your model’s key features and terminate edge loops before less key areas. While modeling with even mesh density can be a virtue, varying mesh density can be a lifesaver when working on heavy models.
<p><img src="assets/img/scale_example.png" alt="scale_example" />
<p>Look how the density above increases in the knee and ankle. This ensures that when the leg bends, there isn’t excessive stretching or artifacting.
<p><br />
<p>Have any tips of your own? Leave them in the comments below! Also, If you enjoyed this post, please consider supporting the site on Patreon to help pay for some of the costs of running the website!
<p><br />
<p><a href="https://www.patreon.com/bePatron?u=4389823" data-patreon-widget-type="become-patron-button">Become a Patron!</a><script async="" src="https://c6.patreon.com/becomePatronButton.bundle.js"></script>
</article>
<div id="disqus_thread"></div>
<script type="text/javascript">
/* * * CONFIGURATION VARIABLES * * */
var disqus_shortname = 'topologyguides';
/* * * DON'T EDIT BELOW THIS LINE * * */
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
</script>
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript" rel="nofollow">comments powered by Disqus.</a></noscript>
<aside class="related">
<h2>Related posts</h2>
<ul class="related-posts">
<li>
<a href="/human-foot">
<span>Modeling a Human Foot</span>
<small>28/11</small>
</a>
<li>
<a href="/human-hand">
<span>Modeling a Human Hand</span>
<small>14/06</small>
</a>
<li>
<a href="/bevel-width-transitions">
<span>Modeling Bevel Width Transitions</span>
<small>14/05</small>
</a>
<li>
<a href="/manipulating-edge-poles">
<span>Moving and Manipulating Edge Poles</span>
<small>02/07</small>
</a>
</aside>
<script type="text/javascript" src="//downloads.mailchimp.com/js/signup-forms/popup/unique-methods/embed.js" data-dojo-config="usePlainJson: true, isDebug: false"></script><script type="text/javascript">window.dojoRequire(["mojo/signup-forms/Loader"], function(L) { L.start({"baseUrl":"mc.us10.list-manage.com","uuid":"377f8cb02163f375b3f03fcfb","lid":"ceb49c397a","uniqueMethods":true}) })</script>
<footer>
<span>Guides for 3d Artists</span>
<span>| Written by Johnson Martin</span>
</footer>
</div>
<script type="text/javascript" src="/assets/js/theme.js"></script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-46758601-3', 'auto');
ga('send', 'pageview');
</script>