Upload 19 files
Browse files- array.rst.txt +170 -0
- bevel.rst.txt +179 -0
- booleans.rst.txt +60 -0
- build.rst.txt +49 -0
- decimate.rst.txt +116 -0
- edge_split.rst.txt +76 -0
- explode.rst.txt +79 -0
- mask.rst.txt +46 -0
- mirror.rst.txt +108 -0
- multiresolution.rst.txt +93 -0
- ocean.rst.txt +220 -0
- particle_instance.rst.txt +194 -0
- remesh.rst.txt +98 -0
- screw.rst.txt +61 -0
- skin.rst.txt +144 -0
- solidify.rst.txt +110 -0
- subdivision_surface.rst.txt +184 -0
- triangulate.rst.txt +55 -0
- wireframe.rst.txt +86 -0
array.rst.txt
ADDED
@@ -0,0 +1,170 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.. _bpy.types.ArrayModifier:
|
2 |
+
|
3 |
+
**************
|
4 |
+
Array Modifier
|
5 |
+
**************
|
6 |
+
|
7 |
+
The *Array* modifier creates an array of copies of the base object, with each copy being offset from
|
8 |
+
the previous one in any of a number of possible ways. Vertices in adjacent copies can be merged if they are nearby,
|
9 |
+
allowing smooth :doc:`Subdivision Surface </modeling/modifiers/generate/subdivision_surface>`
|
10 |
+
frameworks to be generated.
|
11 |
+
|
12 |
+
This modifier can be useful when combined with tileable meshes for quickly developing large scenes.
|
13 |
+
It is also useful for creating complex repetitive shapes.
|
14 |
+
|
15 |
+
Multiple Array modifiers may be active for an object at the same time
|
16 |
+
(e.g. to create complex three-dimensional constructs).
|
17 |
+
|
18 |
+
|
19 |
+
Options
|
20 |
+
=======
|
21 |
+
|
22 |
+
.. figure:: /images/modeling_modifiers_generate_array_panel.png
|
23 |
+
:align: right
|
24 |
+
|
25 |
+
The Array modifier.
|
26 |
+
|
27 |
+
Fit Type
|
28 |
+
Controls how the length of the array is determined. There are three choices,
|
29 |
+
activating respectively the display of the *Curve*, *Length* or *Count* settings explained below:
|
30 |
+
|
31 |
+
Fit Curve
|
32 |
+
Generates enough copies to fit within the length of the curve object specified in *Curve*.
|
33 |
+
Fit Length
|
34 |
+
Generates enough copies to fit within the fixed length given by *Length*.
|
35 |
+
Fixed Count
|
36 |
+
Generates the number of copies specified in *Count*.
|
37 |
+
|
38 |
+
.. container:: lead
|
39 |
+
|
40 |
+
.. clear
|
41 |
+
|
42 |
+
.. note::
|
43 |
+
|
44 |
+
- Both *Fit Curve* and *Fit Length* use the local coordinate system size of the base object, which means that
|
45 |
+
scaling the base object in Object Mode will not change the number of copies generated by the modifier.
|
46 |
+
- *Fit Length* uses the local coordinate system length of the curve, which means that scaling the curve in
|
47 |
+
Object Mode will not change the number of copies generated by the modifier.
|
48 |
+
- :ref:`Applying <bpy.ops.object.transform_apply>` the scale can be useful for both.
|
49 |
+
|
50 |
+
|
51 |
+
Offset
|
52 |
+
------
|
53 |
+
|
54 |
+
Constant Offset, X, Y, Z
|
55 |
+
Adds a constant translation component to the duplicate object's offset.
|
56 |
+
X, Y and Z constant components can be specified.
|
57 |
+
|
58 |
+
Relative Offset, X, Y, Z
|
59 |
+
Adds a translation equal to the object's bounding box size along each axis, multiplied by a scaling factor,
|
60 |
+
to the offset. X, Y and Z scaling factors can be specified.
|
61 |
+
|
62 |
+
.. figure:: /images/modeling_modifiers_generate_array_offset-relative.png
|
63 |
+
|
64 |
+
Relative offset (0.5, 1.0 and 1.5) examples.
|
65 |
+
|
66 |
+
Object Offset
|
67 |
+
Adds a transformation taken from an object (relative to the current object) to the offset.
|
68 |
+
It is good practice to use an Empty object centered or near to the initial object.
|
69 |
+
E.g. by rotating this Empty a circle or helix of objects can be created.
|
70 |
+
|
71 |
+
.. figure:: /images/modeling_modifiers_generate_array_offset-object.png
|
72 |
+
|
73 |
+
Object offset example.
|
74 |
+
|
75 |
+
|
76 |
+
Merge
|
77 |
+
-----
|
78 |
+
|
79 |
+
Merge
|
80 |
+
If enabled, vertices in each copy will be merged with vertices
|
81 |
+
in the next copy that are within the given *Distance*.
|
82 |
+
First Last
|
83 |
+
If enabled **and** *Merge* is enabled, vertices in the first copy will be merged with vertices
|
84 |
+
in the last copy, again if they are within *Distance* range. This is useful for circular objects.
|
85 |
+
|
86 |
+
.. list-table:: First Last merge example.
|
87 |
+
|
88 |
+
* - .. figure:: /images/modeling_modifiers_generate_array_first-last-off.png
|
89 |
+
|
90 |
+
Subdivision discontinuity caused by not merging vertices between first and
|
91 |
+
last copies (*First Last* off).
|
92 |
+
|
93 |
+
- .. figure:: /images/modeling_modifiers_generate_array_first-last-on.png
|
94 |
+
|
95 |
+
Subdivision discontinuity eliminated by merging vertices between first and
|
96 |
+
last copies (*First Last* on).
|
97 |
+
|
98 |
+
Distance
|
99 |
+
Controls the merge distance for *Merge* and *First Last*.
|
100 |
+
|
101 |
+
|
102 |
+
UVs
|
103 |
+
---
|
104 |
+
|
105 |
+
U Offset, V Offset
|
106 |
+
Shifts UVs of each new duplicate by a settable amount.
|
107 |
+
|
108 |
+
|
109 |
+
Cap
|
110 |
+
---
|
111 |
+
|
112 |
+
Start Cap / End Cap
|
113 |
+
This allows either endpoints of the array to have a different mesh subsisted.
|
114 |
+
|
115 |
+
For the *start*: as if it was in position -1, i.e. one "array step" before the first "regular" array copy.
|
116 |
+
For the *end*: as if it was in position *n* + 1, i.e. one "array step" after the last "regular" array copy.
|
117 |
+
|
118 |
+
When *Merge* is activated, and the *cap* vertices are within the *Distance* threshold, they will be merged.
|
119 |
+
|
120 |
+
.. note::
|
121 |
+
|
122 |
+
The start/end cap objects currently do not support the *First Last* option.
|
123 |
+
|
124 |
+
|
125 |
+
Hints
|
126 |
+
=====
|
127 |
+
|
128 |
+
Offset Calculation
|
129 |
+
------------------
|
130 |
+
|
131 |
+
The transformation applied from one copy to the next is calculated as the sum of the three
|
132 |
+
different components (*Relative*, *Constant* and *Object*),
|
133 |
+
each of which can be enabled/disabled independently of the others. This allows, for example,
|
134 |
+
a relative offset of (1.0, 0.0, 0.0) and a constant offset of (0.1, 0.0, 0.0),
|
135 |
+
giving an array of objects neatly spaced along the X axis with a constant 0.1
|
136 |
+
unit between them, whatever the original object's size.
|
137 |
+
|
138 |
+
|
139 |
+
Examples
|
140 |
+
========
|
141 |
+
|
142 |
+
.. figure:: /images/modeling_modifiers_generate_array_example-mechanical-chain.png
|
143 |
+
|
144 |
+
A chain created from a single link.
|
145 |
+
`Sample blend-file <https://wiki.blender.org/wiki/File:Dev-ArrayModifier-Chain01.blend>`__.
|
146 |
+
|
147 |
+
.. figure:: /images/modeling_modifiers_generate_array_example-organic-tentacle.jpg
|
148 |
+
|
149 |
+
A tentacle created with an Array Modifier followed by a Curve Modifier.
|
150 |
+
|
151 |
+
The segment in the foreground is the base mesh for the tentacle; the tentacle is capped by two
|
152 |
+
specially-modeled objects deformed by the same Curve object as the main part of the tentacle.
|
153 |
+
`Sample blend-file <https://wiki.blender.org/wiki/File:Manual-Modifier-Array-Tentacle01.blend>`__.
|
154 |
+
|
155 |
+
|
156 |
+
Fractal
|
157 |
+
-------
|
158 |
+
|
159 |
+
.. list-table::
|
160 |
+
|
161 |
+
* - .. figure:: /images/modeling_modifiers_generate_array_example-fractal-1.jpg
|
162 |
+
:width: 320px
|
163 |
+
|
164 |
+
Multi-level array animated with motion blur.
|
165 |
+
|
166 |
+
- .. figure:: /images/modeling_modifiers_generate_array_example-fractal-2.png
|
167 |
+
:width: 320px
|
168 |
+
|
169 |
+
Fractal created with multiple arrays.
|
170 |
+
`Sample blend-file <https://wiki.blender.org/wiki/File:Dev-ArrayModifier-Fractal01.blend>`__.
|
bevel.rst.txt
ADDED
@@ -0,0 +1,179 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.. _bpy.types.BevelModifier:
|
2 |
+
|
3 |
+
**************
|
4 |
+
Bevel Modifier
|
5 |
+
**************
|
6 |
+
|
7 |
+
The *Bevel* modifier bevels the edges of the mesh it is applied to,
|
8 |
+
with some control of how and where the bevel is applied to the mesh.
|
9 |
+
|
10 |
+
It is a non-destructive alternative to
|
11 |
+
the :doc:`Bevel Operation </modeling/meshes/editing/subdividing/bevel>` in Edit Mode.
|
12 |
+
|
13 |
+
.. list-table:: Side views of a cube.
|
14 |
+
:align: center
|
15 |
+
|
16 |
+
* - .. figure:: /images/modeling_modifiers_generate_bevel_square-not.png
|
17 |
+
:width: 150px
|
18 |
+
|
19 |
+
Not beveled.
|
20 |
+
|
21 |
+
- .. figure:: /images/modeling_modifiers_generate_bevel_square.png
|
22 |
+
:width: 150px
|
23 |
+
|
24 |
+
Beveled.
|
25 |
+
|
26 |
+
|
27 |
+
Options
|
28 |
+
=======
|
29 |
+
|
30 |
+
.. figure:: /images/modeling_modifiers_generate_bevel_panel.png
|
31 |
+
:align: right
|
32 |
+
|
33 |
+
The Bevel modifier.
|
34 |
+
|
35 |
+
Width
|
36 |
+
The size of the bevel effect. See *Width Method* below.
|
37 |
+
|
38 |
+
.. figure:: /images/modeling_modifiers_generate_bevel_cubes.png
|
39 |
+
:width: 350px
|
40 |
+
|
41 |
+
Three Cubes with 0.1, 0.3 and 0.5 bevel widths.
|
42 |
+
|
43 |
+
Segments
|
44 |
+
The number of edge loops added along the bevel's face.
|
45 |
+
Profile
|
46 |
+
The shape of the bevel, from concave to convex. It has no effect if *Segments* is less than 2.
|
47 |
+
Material
|
48 |
+
The index of the material slot to use for the bevel.
|
49 |
+
When set to -1, the material of the nearest original face will be used.
|
50 |
+
Only Vertices
|
51 |
+
When enabled, only the areas near vertices are beveled, the edges remain unchanged.
|
52 |
+
|
53 |
+
.. figure:: /images/modeling_modifiers_generate_bevel_cubes-vertices-only.png
|
54 |
+
:width: 350px
|
55 |
+
|
56 |
+
Three cubes with 0.1, 0.3 and 0.5 bevel widths, with *Only Vertices* option enabled.
|
57 |
+
|
58 |
+
Clamp Overlap
|
59 |
+
Limits the width of each beveled edge so that edges cannot cause
|
60 |
+
overlapping intersections with other geometry.
|
61 |
+
Loop Slide
|
62 |
+
If there are unbeveled edges along with beveled edges into a vertex,
|
63 |
+
the bevel tries to slide along those edges when possible.
|
64 |
+
Turning the option off can lead to more even bevel widths.
|
65 |
+
Mark Seams
|
66 |
+
If a seam edge crosses a non-seam one and you bevel all of them,
|
67 |
+
this option will maintain the expected propagation of seams.
|
68 |
+
Mark Sharp
|
69 |
+
Similar to Mark Seams, but for sharp edges.
|
70 |
+
Harden Normals
|
71 |
+
When enabled, the per-vertex face normals of the bevel faces are adjusted to
|
72 |
+
match the surrounding faces, and the normals of the surrounding faces are not affected.
|
73 |
+
This will keep the surrounding faces flat (if they were before),
|
74 |
+
with the bevel faces shading smoothly into them. For this effect to work,
|
75 |
+
you need custom normals data, which requires *Auto Smooth* option to be enabled
|
76 |
+
(see :doc:`Normals </modeling/meshes/editing/normals>`).
|
77 |
+
|
78 |
+
Limit Method
|
79 |
+
Used to control where a bevel is applied to the mesh.
|
80 |
+
|
81 |
+
None
|
82 |
+
No limit, all edges will be beveled.
|
83 |
+
Angle
|
84 |
+
Only edges where the adjacent faces form an angle smaller than the defined threshold will be beveled.
|
85 |
+
Intended to allow you to bevel only the sharp edges of an object without affecting its smooth surfaces.
|
86 |
+
Weight
|
87 |
+
Use each edge's bevel weight to determine the width of the bevel.
|
88 |
+
When the bevel weight is 0.0, no bevel is applied.
|
89 |
+
See :doc:`here </modeling/meshes/editing/edges>` about adjusting bevel weights.
|
90 |
+
Vertex Group
|
91 |
+
Use weights from a vertex group to determine the width of the bevel.
|
92 |
+
When the vertex weight is 0.0, no bevel is applied.
|
93 |
+
An edge is only beveled if both of its vertices are in the vertex group.
|
94 |
+
See :doc:`here </modeling/meshes/properties/vertex_groups/vertex_groups>` about adjusting vertex group weights.
|
95 |
+
|
96 |
+
Width Method
|
97 |
+
Declares how *Width* will be interpreted to determine the amount of bevel.
|
98 |
+
|
99 |
+
.. figure:: /images/modeling_modifiers_generate_bevel_width-methods.png
|
100 |
+
:align: right
|
101 |
+
:width: 240
|
102 |
+
|
103 |
+
Width methods.
|
104 |
+
|
105 |
+
Offset
|
106 |
+
Value is interpreted as the distance from the original edge to the edge of the beveled face.
|
107 |
+
Width
|
108 |
+
Value is interpreted as the distance between the two new edges formed by the bevel.
|
109 |
+
Depth
|
110 |
+
Value is the perpendicular distance from the new bevel face to original edge.
|
111 |
+
Percent
|
112 |
+
Similar to *Offset* but the value is interpreted as a percentage of the adjacent edge length.
|
113 |
+
|
114 |
+
Set Face Strength Mode
|
115 |
+
Set *Face Strength* on the faces involved in the bevel, according to the mode specified here.
|
116 |
+
This can be used in conjunction with a following
|
117 |
+
:doc:`Weighted Normals </modeling/modifiers/modify/weighted_normal>` modifier
|
118 |
+
(with the *Face Influence* option checked).
|
119 |
+
|
120 |
+
None
|
121 |
+
Do not set face strength.
|
122 |
+
New
|
123 |
+
Set the face strength of new faces along edges to *Medium*,
|
124 |
+
and the face strength of new faces at vertices to *Weak*.
|
125 |
+
Affected
|
126 |
+
In addition to those set for the *New* case,
|
127 |
+
also set the faces adjacent to new faces to have strength *Strong*.
|
128 |
+
All
|
129 |
+
In addition to those set for the *Affected* case,
|
130 |
+
also set all the rest of the faces of the model to have strength *Strong*.
|
131 |
+
|
132 |
+
Miter Patterns
|
133 |
+
A *miter* is formed when two beveled edges meet at an angle.
|
134 |
+
On the side where the angle is greater than 180 degrees, if any, it is called an *outer miter*.
|
135 |
+
If it is less than 180 degrees, then it is called an *inner miter*.
|
136 |
+
The outer and inner miters can each be set to one of these patterns:
|
137 |
+
|
138 |
+
Sharp
|
139 |
+
Edges meet at a sharp point, with no extra vertices introduced on the edges.
|
140 |
+
Patch
|
141 |
+
Edges meet at a sharp point but in addition, two extra vertices are introduced near the point
|
142 |
+
so that the edges and faces at the vertex may be less pinched together than
|
143 |
+
what occurs in the *Sharp* case.
|
144 |
+
This pattern does makes no sense for inner miters, so it behaves like *Arc* for them.
|
145 |
+
|
146 |
+
The *Spread* slider controls how far the new vertices are from the meeting point.
|
147 |
+
Arc
|
148 |
+
Two vertices are introduced near the meeting point, and a curved arc joins them together.
|
149 |
+
|
150 |
+
The *Spread* slider controls how far the new vertices are from the meeting point.
|
151 |
+
|
152 |
+
The *Profile* slider controls the shape of the arc.
|
153 |
+
|
154 |
+
.. list-table:: Diagrams of the miter patterns.
|
155 |
+
|
156 |
+
* - .. figure:: /images/modeling_meshes_editing_subdividing_bevel_miter-2.png
|
157 |
+
|
158 |
+
Sharp outer miter.
|
159 |
+
|
160 |
+
- .. figure:: /images/modeling_meshes_editing_subdividing_bevel_miter-3.png
|
161 |
+
|
162 |
+
Patch outer miter.
|
163 |
+
|
164 |
+
- .. figure:: /images/modeling_meshes_editing_subdividing_bevel_miter-4.png
|
165 |
+
|
166 |
+
Arc outer miter.
|
167 |
+
|
168 |
+
* - .. figure:: /images/modeling_meshes_editing_subdividing_bevel_miter-5.png
|
169 |
+
|
170 |
+
Sharp inner miter.
|
171 |
+
|
172 |
+
- .. figure:: /images/modeling_meshes_editing_subdividing_bevel_miter-6.png
|
173 |
+
|
174 |
+
Arc inner miter.
|
175 |
+
|
176 |
+
- ..
|
177 |
+
|
178 |
+
Spread
|
179 |
+
The value used to spread extra vertices apart for non-sharp miters.
|
booleans.rst.txt
ADDED
@@ -0,0 +1,60 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.. _bpy.types.BooleanModifier:
|
2 |
+
|
3 |
+
****************
|
4 |
+
Boolean Modifier
|
5 |
+
****************
|
6 |
+
|
7 |
+
The *Boolean* modifier performs operations on meshes that are otherwise too complex
|
8 |
+
to achieve with as few steps by editing meshes manually. It uses one of
|
9 |
+
the three available boolean operations to create a single mesh out of two mesh objects:
|
10 |
+
|
11 |
+
.. figure:: /images/modeling_modifiers_generate_booleans_union-intersect-difference-examples.png
|
12 |
+
|
13 |
+
The Union, Intersection and Difference between a Cube and a UV Sphere,
|
14 |
+
with the modifier applied to the sphere and using the cube as target.
|
15 |
+
|
16 |
+
This modifier needs a second object to be the target (the second operand) of the operation.
|
17 |
+
|
18 |
+
.. warning::
|
19 |
+
|
20 |
+
Only :term:`manifold` meshes are guaranteed to give proper results,
|
21 |
+
other cases (especially "opened" meshes, :term:`non-manifold` but without any self-intersections)
|
22 |
+
will usually work well, but might give odd glitches and artifacts in some cases.
|
23 |
+
|
24 |
+
You should also avoid any co-planar faces (or co-linear edges) between both operands,
|
25 |
+
those also tend to give issues currently.
|
26 |
+
|
27 |
+
.. tip::
|
28 |
+
|
29 |
+
If you have marked your objects to show the edges
|
30 |
+
(in :menuselection:`Properties Editor --> Object --> Viewport Display`, enable *Wireframe*),
|
31 |
+
you will see the edge creation process while you are moving your objects around. Depending on your mesh topology,
|
32 |
+
you can also enable X-Ray and Transparency and see the topology being created in real-time.
|
33 |
+
|
34 |
+
|
35 |
+
Options
|
36 |
+
=======
|
37 |
+
|
38 |
+
.. figure:: /images/modeling_modifiers_generate_booleans_panel.png
|
39 |
+
|
40 |
+
The Boolean modifier.
|
41 |
+
|
42 |
+
|
43 |
+
Operations
|
44 |
+
----------
|
45 |
+
|
46 |
+
Operation
|
47 |
+
Which boolean operation will be used.
|
48 |
+
|
49 |
+
Difference
|
50 |
+
The target mesh is subtracted from the modified mesh (everything *outside* of the target mesh is kept).
|
51 |
+
Union
|
52 |
+
The target mesh is added to the modified mesh.
|
53 |
+
Intersect
|
54 |
+
Opposite of *Difference* (everything *inside* of the target mesh is kept).
|
55 |
+
|
56 |
+
Object
|
57 |
+
The name of the target mesh object.
|
58 |
+
|
59 |
+
Overlap Threshold
|
60 |
+
Maximum distance between two faces to consider them as overlapping.
|
build.rst.txt
ADDED
@@ -0,0 +1,49 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.. _bpy.types.BuildModifier:
|
2 |
+
|
3 |
+
**************
|
4 |
+
Build Modifier
|
5 |
+
**************
|
6 |
+
|
7 |
+
The *Build* modifier causes the faces of the mesh object to appear or disappear one after the other over time.
|
8 |
+
|
9 |
+
By default, faces appear in the order in which they are stored in memory (by default, the order of creation).
|
10 |
+
The face/vertex order can be altered in Edit Mode by using :ref:`Sort Mesh Elements <mesh-edit-sort-elements>`.
|
11 |
+
|
12 |
+
|
13 |
+
Options
|
14 |
+
=======
|
15 |
+
|
16 |
+
.. figure:: /images/modeling_modifiers_generate_build_panel.png
|
17 |
+
:align: right
|
18 |
+
|
19 |
+
The Build modifier.
|
20 |
+
|
21 |
+
Start
|
22 |
+
The start frame of the building process.
|
23 |
+
Length
|
24 |
+
The number of frames over which to rebuild the object.
|
25 |
+
|
26 |
+
Randomize
|
27 |
+
Randomizes the order in which the faces are built.
|
28 |
+
Seed
|
29 |
+
The random seed.
|
30 |
+
Changing this value gives a different "random" order when *Randomize* is checked.
|
31 |
+
This order is always the same for a given seed/mesh set.
|
32 |
+
Reversed
|
33 |
+
The modifier will operate in reverse, essentially allowing it to be used as a "deconstruction" effect.
|
34 |
+
This is useful for making a set of dupli-objects gradually disappear.
|
35 |
+
|
36 |
+
|
37 |
+
Example
|
38 |
+
=======
|
39 |
+
|
40 |
+
The *Build* modifier is often useful when needing a way to get a large number of items to progressively appear,
|
41 |
+
without resorting to animating the visibility of each one by one.
|
42 |
+
Examples of this include a mesh containing vertices only,
|
43 |
+
which is used as an :doc:`Instance Verts emitter </scene_layout/object/properties/instancing/verts>`,
|
44 |
+
and has the build modifier on it. Such a setup is a workaround/technique for being able to
|
45 |
+
art-direct some semi-random layout of a collection of objects (i.e. leaves/balls forming a carpet of sorts)
|
46 |
+
when doing so with particles is not desirable
|
47 |
+
(e.g. due to undesirable distribution of items leaving random gaps and overlapping in other places).
|
48 |
+
|
49 |
+
.. youtube:: -7SqfX5vt_8
|
decimate.rst.txt
ADDED
@@ -0,0 +1,116 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.. _bpy.types.DecimateModifier:
|
2 |
+
|
3 |
+
*****************
|
4 |
+
Decimate Modifier
|
5 |
+
*****************
|
6 |
+
|
7 |
+
The *Decimate* modifier allows you to reduce the vertex/face count of a mesh with minimal shape changes.
|
8 |
+
|
9 |
+
This is not usually used on meshes which have been created by modeling carefully and economically
|
10 |
+
(where all vertices and faces are necessary to correctly define the shape).
|
11 |
+
But if the mesh is the result of complex modeling,
|
12 |
+
sculpting and/or applied :doc:`Subdivision Surface </modeling/modifiers/generate/subdivision_surface>`/
|
13 |
+
:doc:`Multiresolution </modeling/modifiers/generate/multiresolution>` modifiers,
|
14 |
+
the *Decimate* one can be used to reduce the polygon count for a performance increase,
|
15 |
+
or simply remove unnecessary vertices and edges.
|
16 |
+
|
17 |
+
Unlike the majority of existing modifiers, this one does not allow
|
18 |
+
you to visualize your changes in Edit Mode.
|
19 |
+
|
20 |
+
|
21 |
+
Options
|
22 |
+
=======
|
23 |
+
|
24 |
+
Decimate Type
|
25 |
+
-------------
|
26 |
+
|
27 |
+
Collapse
|
28 |
+
^^^^^^^^
|
29 |
+
|
30 |
+
.. figure:: /images/modeling_modifiers_generate_decimate_panel-collapse.png
|
31 |
+
:align: right
|
32 |
+
|
33 |
+
The Decimate modifier in Collapse mode.
|
34 |
+
|
35 |
+
Merges vertices together progressively, taking the shape of the mesh into account.
|
36 |
+
|
37 |
+
Ratio
|
38 |
+
The ratio of faces to keep after decimation.
|
39 |
+
|
40 |
+
- On 1.0: the mesh is unchanged.
|
41 |
+
- On 0.5: edges have been collapsed such that half the number of faces remain (see note below).
|
42 |
+
- On 0.0: all faces have been removed.
|
43 |
+
|
44 |
+
.. note::
|
45 |
+
|
46 |
+
Although the *Ratio* is directly proportional to the number of remaining faces,
|
47 |
+
triangles are used when calculating the ratio.
|
48 |
+
|
49 |
+
This means that if your mesh contains quads or other polygons,
|
50 |
+
the number of remaining faces will be larger than expected,
|
51 |
+
because those will remain unchanged if their edges are not collapsed.
|
52 |
+
|
53 |
+
This is only true if the *Triangulate* option is disabled.
|
54 |
+
|
55 |
+
Vertex Group
|
56 |
+
A vertex group that controls what parts of the mesh are decimated.
|
57 |
+
|
58 |
+
Factor
|
59 |
+
The amount of influence the *Vertex Group* has on the decimation.
|
60 |
+
Triangulate
|
61 |
+
Keeps any resulting triangulated geometry from the decimation process.
|
62 |
+
Symmetry
|
63 |
+
Maintains symmetry on a single axis.
|
64 |
+
|
65 |
+
|
66 |
+
Un-Subdivide
|
67 |
+
^^^^^^^^^^^^
|
68 |
+
|
69 |
+
.. figure:: /images/modeling_modifiers_generate_decimate_panel-un-subdivide.png
|
70 |
+
:align: right
|
71 |
+
|
72 |
+
The Decimate modifier in Un-Subdivide mode.
|
73 |
+
|
74 |
+
It can be thought of as the reverse of subdivide.
|
75 |
+
It attempts to remove edges that were the result of a subdivide operation.
|
76 |
+
It is intended for meshes with a mainly grid-based topology (without giving uneven geometry).
|
77 |
+
If additional editing has been done after the subdivide operation, the results may be unexpected.
|
78 |
+
|
79 |
+
Iterations
|
80 |
+
The number of times to perform the un-subdivide operation.
|
81 |
+
Two iterations is the same as one subdivide operation, so you will usually want to use even numbers.
|
82 |
+
|
83 |
+
|
84 |
+
Planar
|
85 |
+
^^^^^^
|
86 |
+
|
87 |
+
.. figure:: /images/modeling_modifiers_generate_decimate_panel-planar.png
|
88 |
+
:align: right
|
89 |
+
|
90 |
+
The Decimate modifier in Planar mode.
|
91 |
+
|
92 |
+
It reduces details on forms comprised of mainly flat surfaces.
|
93 |
+
|
94 |
+
Angle Limit
|
95 |
+
Dissolve geometry which form angles (between surfaces) higher than this setting.
|
96 |
+
|
97 |
+
All Boundaries
|
98 |
+
When enabled, all vertices along the boundaries of faces are dissolved.
|
99 |
+
This can give nicer results when using a high *Angle Limit*.
|
100 |
+
|
101 |
+
Delimit
|
102 |
+
Prevent dissolving geometry in certain places.
|
103 |
+
|
104 |
+
Normal
|
105 |
+
Does not dissolve edges on the borders of areas where the face normals are reversed.
|
106 |
+
Material
|
107 |
+
Does not dissolve edges on the borders of where different materials are assigned.
|
108 |
+
Seam
|
109 |
+
Does not dissolve edges marked as seams.
|
110 |
+
|
111 |
+
|
112 |
+
Further Options
|
113 |
+
---------------
|
114 |
+
|
115 |
+
Face Count
|
116 |
+
This label shows the number of remaining faces as a result of applying the *Decimate* modifier.
|
edge_split.rst.txt
ADDED
@@ -0,0 +1,76 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.. _bpy.types.EdgeSplitModifier:
|
2 |
+
|
3 |
+
*******************
|
4 |
+
Edge Split Modifier
|
5 |
+
*******************
|
6 |
+
|
7 |
+
The *Edge Split* modifier splits, duplicates edges within a mesh,
|
8 |
+
breaking 'links' between faces around those split edges.
|
9 |
+
|
10 |
+
The edges to split can be determined from the edge angle (i.e. angle between faces forming that edge),
|
11 |
+
and/or edges marked as sharp.
|
12 |
+
|
13 |
+
Splitting an edge affects vertex normal generation at that edge, making the edge appear sharp.
|
14 |
+
Hence, this modifier can be used to achieve the same effect as :ref:`Auto Smooth <auto-smooth>`,
|
15 |
+
making edges appear sharp when their angle is above a certain threshold.
|
16 |
+
It can also be used for manual control of the smoothing process,
|
17 |
+
where the user defines which edges should appear smooth or sharp
|
18 |
+
(see :ref:`Mesh Smoothing <modeling-meshes-editing-normals-shading>` for other ways to do this).
|
19 |
+
If desired, both modes can be active at once.
|
20 |
+
|
21 |
+
.. note::
|
22 |
+
|
23 |
+
This modifier is kept mostly for historical/compatibility reasons.
|
24 |
+
Everything it can do in shading, and much more,
|
25 |
+
can now be achieved using :ref:`custom normals <modeling_meshes_normals_custom>`.
|
26 |
+
|
27 |
+
Unless you really need the topology changes it generates, it is not advised to use it in new projects.
|
28 |
+
|
29 |
+
.. note::
|
30 |
+
|
31 |
+
Splitting edges can also be :ref:`performed manually <bpy.ops.mesh.edge_split>` in Edit Mode.
|
32 |
+
|
33 |
+
|
34 |
+
Options
|
35 |
+
=======
|
36 |
+
|
37 |
+
.. figure:: /images/modeling_modifiers_generate_edge-split_panel.png
|
38 |
+
:align: right
|
39 |
+
|
40 |
+
The Edge Split modifier.
|
41 |
+
|
42 |
+
Edge Angle
|
43 |
+
When enabled, edges will be split if the angle between its
|
44 |
+
two adjacent faces is greater than the *Split Angle*.
|
45 |
+
|
46 |
+
Split Angle
|
47 |
+
On 0: all edges are split. On 180: no edges are split.
|
48 |
+
|
49 |
+
Sharp Edges
|
50 |
+
When enabled, edges will be split if they were :ref:`marked as sharp <bpy.ops.mesh.mark_sharp>`.
|
51 |
+
|
52 |
+
.. note::
|
53 |
+
|
54 |
+
:term:`Non-manifold` edges will always be split.
|
55 |
+
|
56 |
+
|
57 |
+
Examples
|
58 |
+
========
|
59 |
+
|
60 |
+
.. list-table::
|
61 |
+
|
62 |
+
* - .. figure:: /images/modeling_modifiers_generate_edge-split_example-1.png
|
63 |
+
|
64 |
+
Flat shading.
|
65 |
+
|
66 |
+
- .. figure:: /images/modeling_modifiers_generate_edge-split_example-2.png
|
67 |
+
|
68 |
+
Smooth shading.
|
69 |
+
|
70 |
+
* - .. figure:: /images/modeling_modifiers_generate_edge-split_example-3.png
|
71 |
+
|
72 |
+
Smooth shading with Edge Split.
|
73 |
+
|
74 |
+
- .. figure:: /images/modeling_modifiers_generate_edge-split_example-4.png
|
75 |
+
|
76 |
+
Smooth shading with Edge Split and Subdivision Surface.
|
explode.rst.txt
ADDED
@@ -0,0 +1,79 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.. _bpy.types.ExplodeModifier:
|
2 |
+
|
3 |
+
****************
|
4 |
+
Explode Modifier
|
5 |
+
****************
|
6 |
+
|
7 |
+
The *Explode* modifier is used to alter the mesh geometry by moving/rotating its faces in a way
|
8 |
+
that roughly tracks particles emitted by that object, making it look as if the mesh is being exploded
|
9 |
+
(broken apart and pushed outward).
|
10 |
+
|
11 |
+
For this modifier to have any visible effect, there needs to be a particle system on its object.
|
12 |
+
That particle system will control how the mesh is exploded.
|
13 |
+
|
14 |
+
Both the number of emitted particles and number of faces determine how granular the *Explode* modifier is.
|
15 |
+
More faces and more particles will mean more individual pieces.
|
16 |
+
|
17 |
+
.. Broken link to the demo video...
|
18 |
+
Here is
|
19 |
+
a `demo video <https://wiki.blender.org/uploads/7/7b/Manual_-_Explode_Modifier_-_Exploding_Cube_-_2.5.ogg>`__
|
20 |
+
showing a cube with a particle system and *Explode* modifier.
|
21 |
+
(`blend-file <https://wiki.blender.org/wiki/File:Manual_-_Explode_Modifier_-_Exploding_Cube_-_2.5.blend>`__).
|
22 |
+
|
23 |
+
Here is
|
24 |
+
a `demo blend-file <https://wiki.blender.org/wiki/File:Manual_-_Explode_Modifier_-_Exploding_Cube_-_2.5.blend>`__
|
25 |
+
showing a cube with a particle system and *Explode* modifier.
|
26 |
+
|
27 |
+
.. note::
|
28 |
+
|
29 |
+
The *Explode* modifier must come after the *Particle System* one in the :ref:`modifier stack <modifier-stack>`,
|
30 |
+
in order for the former to get required data from the later.
|
31 |
+
|
32 |
+
|
33 |
+
Options
|
34 |
+
=======
|
35 |
+
|
36 |
+
.. figure:: /images/modeling_modifiers_simulate_explode_panel.png
|
37 |
+
:align: right
|
38 |
+
|
39 |
+
The Explode modifier, with a Particle System above it.
|
40 |
+
|
41 |
+
Vertex Group
|
42 |
+
Vertices in this group may not be affected by the *Explode* modifier.
|
43 |
+
Vertices with full weight are not affected at all,
|
44 |
+
while vertices with less weight have a higher chance of being affected.
|
45 |
+
|
46 |
+
Vertices with null weight will be treated like those which do not belong to the group at all, and explode normally.
|
47 |
+
|
48 |
+
Protect
|
49 |
+
Clean vertex group edges. Depending on the weights assigned to that vertex group,
|
50 |
+
either completely protect those faces from being affected by the *Explode* modifier
|
51 |
+
(which would happen if the faces had a weight value of 1),
|
52 |
+
or completely remove protection from those faces
|
53 |
+
(which would happen if the faces had a weight value of 0).
|
54 |
+
|
55 |
+
Particle UV
|
56 |
+
If set, the U value of the coordinates in that :term:`UV map` will be overwritten
|
57 |
+
with the age of the particle attached to the matching mesh face
|
58 |
+
(in proportion, from 0 for not yet born particles, to 1 for dead ones).
|
59 |
+
|
60 |
+
The V value is set to a constant 0.5 value.
|
61 |
+
|
62 |
+
This allows e.g. to make the color of a fragment (face) vary during it 'explosion' phase,
|
63 |
+
by using a texture with a gradient of colors along its *U* axis.
|
64 |
+
|
65 |
+
Cut Edges
|
66 |
+
Split the mesh in pieces based on location of emitted particles, instead of using existing faces.
|
67 |
+
This will typically give a splitting that appears more random.
|
68 |
+
|
69 |
+
Unborn
|
70 |
+
Show faces when their attached particles are unborn.
|
71 |
+
Alive
|
72 |
+
Show faces when their attached particles are alive.
|
73 |
+
Dead
|
74 |
+
Show faces when their attached particles are dead.
|
75 |
+
Size
|
76 |
+
Scale each face using the size of its attached particle, once that particle is alive.
|
77 |
+
|
78 |
+
Refresh
|
79 |
+
Refresh data in the *Explode* modifier.
|
mask.rst.txt
ADDED
@@ -0,0 +1,46 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.. _bpy.types.MaskModifier:
|
2 |
+
|
3 |
+
*************
|
4 |
+
Mask Modifier
|
5 |
+
*************
|
6 |
+
|
7 |
+
The *Mask* modifier allows vertices of an object to be hidden dynamically based on vertex groups.
|
8 |
+
|
9 |
+
|
10 |
+
Options
|
11 |
+
=======
|
12 |
+
|
13 |
+
Mode
|
14 |
+
The Mask Modifier can hide parts of a mesh based on two different modes, selectable from this select menu.
|
15 |
+
|
16 |
+
Vertex Group
|
17 |
+
When the *Vertex Group* option is selected,
|
18 |
+
all vertices belonging to the chosen Vertex Group (with a weight above zero) will be visible,
|
19 |
+
and all other vertices will be hidden.
|
20 |
+
|
21 |
+
.. list-table::
|
22 |
+
The Mask modifier, Vertex Group mode.
|
23 |
+
|
24 |
+
* - .. figure:: /images/modeling_modifiers_generate_mask_vertex-group.png
|
25 |
+
|
26 |
+
- .. figure:: /images/modeling_modifiers_generate_mask_panel-vertex-group.png
|
27 |
+
|
28 |
+
Armature
|
29 |
+
When in Pose Mode,
|
30 |
+
vertices belonging to the Vertex Group associated with the active bone (same names) will be visible.
|
31 |
+
Vertices not in that group will be hidden.
|
32 |
+
|
33 |
+
.. list-table::
|
34 |
+
The Mask modifier, Armature mode.
|
35 |
+
|
36 |
+
* - .. figure:: /images/modeling_modifiers_generate_mask_armature.png
|
37 |
+
|
38 |
+
- .. figure:: /images/modeling_modifiers_generate_mask_panel-armature.png
|
39 |
+
|
40 |
+
Inverse
|
41 |
+
Normally, vertices belonging to the selected Vertex Group (or group associated with the active pose bone)
|
42 |
+
will be shown. The *Invert* toggle allows you to reverse this behavior, instead only showing vertices
|
43 |
+
which do not belong to the Vertex Group.
|
44 |
+
|
45 |
+
Threshold
|
46 |
+
Vertices with weights less or equal to this value will be hidden.
|
mirror.rst.txt
ADDED
@@ -0,0 +1,108 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.. _bpy.types.MirrorModifier:
|
2 |
+
|
3 |
+
***************
|
4 |
+
Mirror Modifier
|
5 |
+
***************
|
6 |
+
|
7 |
+
The *Mirror* modifier mirrors a mesh along its local X, Y and/or Z axes, across the :term:`Object Origin`.
|
8 |
+
It can also use another object as the mirror center, then use that object's local axes instead of its own.
|
9 |
+
|
10 |
+
|
11 |
+
Options
|
12 |
+
=======
|
13 |
+
|
14 |
+
.. figure:: /images/modeling_modifiers_generate_mirror_panel.png
|
15 |
+
:align: right
|
16 |
+
|
17 |
+
The Mirror modifier.
|
18 |
+
|
19 |
+
Axis
|
20 |
+
The X, Y, Z axis along which to mirror, i.e. the axis perpendicular to the mirror plane of symmetry.
|
21 |
+
|
22 |
+
To understand how the axis applies to the mirror direction, if you were to mirror on the X axis,
|
23 |
+
the positive X values of the original mesh would become the negative X values on the mirrored side.
|
24 |
+
|
25 |
+
You can select more than one of these axes. And will then get more mirrored copies.
|
26 |
+
With one axis you get a single mirror, with two axes four mirrors, and with all three axes eight mirrors.
|
27 |
+
|
28 |
+
Bisect
|
29 |
+
If the mesh is already on both sides of the mirror plane, it is cut by that plane,
|
30 |
+
and only one side (the "negative" one by default) is kept to perform the mirror process.
|
31 |
+
|
32 |
+
Flip
|
33 |
+
When *Bisect* is enabled on an axis, you can use this setting to switch the side kept and mirrored
|
34 |
+
(i.e. when it is enabled, the "positive" side will be kept, instead of the "negative" one).
|
35 |
+
|
36 |
+
Mirror Object
|
37 |
+
An :ref:`Object Selector <ui-eyedropper>` to select an object (usually an empty),
|
38 |
+
which position and rotation will be used to define mirror planes
|
39 |
+
(instead of using the ones from the modified object).
|
40 |
+
|
41 |
+
You can animate it to animate the mirror effect.
|
42 |
+
Vertex Groups
|
43 |
+
Try to mirror existing vertex groups.
|
44 |
+
|
45 |
+
A very nice feature, but one that has very specific prerequisites:
|
46 |
+
|
47 |
+
- The vertex groups you want to mirror must be named following the usual left/right pattern
|
48 |
+
(i.e. suffixed by something like ".R", ".right", ".L", etc.).
|
49 |
+
- The mirror side vertex group must already exist (it will not be created automatically).
|
50 |
+
It must also be completely empty (no vertices assigned to it).
|
51 |
+
|
52 |
+
Merge
|
53 |
+
Where a vertex is in the same place (within the *Merge Limit* distance) as its mirror
|
54 |
+
it will be merged with the mirrored vertex.
|
55 |
+
Merge Limit
|
56 |
+
The maximum distance between a vertex and its mirror copy at which they are merged together
|
57 |
+
(being snapped on the mirror plane). Needs *Merge* to be enabled.
|
58 |
+
|
59 |
+
Clipping
|
60 |
+
Prevents vertices from moving through the mirror plane(s) while the user is transforming them in Edit Mode.
|
61 |
+
|
62 |
+
If it is enabled but vertices are beyond the mirror plane and outside of the *Merge Limit*,
|
63 |
+
the vertices will not be merged. But as soon as the vertices are within *Merge Limit*
|
64 |
+
they are snapped together and cannot be moved beyond the mirror plane.
|
65 |
+
|
66 |
+
.. note::
|
67 |
+
|
68 |
+
Vertices on the mirror plane will be unable to move away from the mirror plane
|
69 |
+
as long as *Clipping* is enabled.
|
70 |
+
You must disable it to be able to move the vertices along the mirror axis again.
|
71 |
+
|
72 |
+
Flip UV
|
73 |
+
The *Flip U* and *Flip V* options allows you to mirror the UV texture coordinates across the middle of the image.
|
74 |
+
|
75 |
+
E.g. if you have a vertex with UV coordinates of (0.3, 0.9),
|
76 |
+
its mirror copy will have UV coordinates of (0.7, 0.1).
|
77 |
+
|
78 |
+
UV Offsets
|
79 |
+
Amount to shift mirrored UVs on the U/V axes.
|
80 |
+
|
81 |
+
It's useful for baking (as overlapping UVs can cause artifacts to appear in the baked map),
|
82 |
+
so the UVs can be moved outside the image and not used for baking, but still be used for display.
|
83 |
+
|
84 |
+
|
85 |
+
Hints
|
86 |
+
=====
|
87 |
+
|
88 |
+
Many modeling tasks involve creating objects that are symmetrical.
|
89 |
+
This modifier offers a simple and efficient way to do this, with real-time update of the mirror as you edit it.
|
90 |
+
Once your modeling is completed you can either click *Apply* to make a real version of your mesh,
|
91 |
+
or leave it as-is for future editing.
|
92 |
+
|
93 |
+
|
94 |
+
Accurately Positioning the Mirror Plane
|
95 |
+
---------------------------------------
|
96 |
+
|
97 |
+
To apply a *Mirror* modifier, it is common to have to move the object's origin onto
|
98 |
+
the edge or face that is to be the axis for mirroring.
|
99 |
+
This can be tricky when attempted visually.
|
100 |
+
|
101 |
+
A good technique to achieve an exact position is
|
102 |
+
to select the edge, then :doc:`snap </scene_layout/object/editing/transform/control/snap>` *Cursor to Selection*.
|
103 |
+
This will position the 3D Cursor in the center of the edge.
|
104 |
+
Finally, use the :ref:`Set Origin <bpy.ops.object.origin_set>` menu, and select *Origin to 3D Cursor*.
|
105 |
+
This will move the object's origin (and thus, the mirror plane) to where the 3D cursor is located,
|
106 |
+
and the mirroring will be exact.
|
107 |
+
|
108 |
+
An alternative is to use an Empty as a *Mirror Object* that you move to the correct position.
|
multiresolution.rst.txt
ADDED
@@ -0,0 +1,93 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.. TODO/Review: {{review|im=needs examples}}.
|
2 |
+
|
3 |
+
.. _bpy.types.MultiresModifier:
|
4 |
+
|
5 |
+
************************
|
6 |
+
Multiresolution Modifier
|
7 |
+
************************
|
8 |
+
|
9 |
+
The *Multiresolution* modifier (often shortened to "Multires") gives you the ability to subdivide a mesh similarly
|
10 |
+
to the :doc:`Subdivision Surface </modeling/modifiers/generate/subdivision_surface>` modifier,
|
11 |
+
but also allows you to edit the new subdivision levels in :doc:`Sculpt Mode </sculpt_paint/sculpting/introduction>`.
|
12 |
+
|
13 |
+
.. note::
|
14 |
+
|
15 |
+
*Multiresolution* is the only modifier that cannot be repositioned in the stack after any modifier that will
|
16 |
+
change geometry or other object data (i.e. all *Generate*, some *Modify* and some *Simulate* modifiers
|
17 |
+
cannot come before the *Multiresolution* one).
|
18 |
+
|
19 |
+
|
20 |
+
Options
|
21 |
+
=======
|
22 |
+
|
23 |
+
.. figure:: /images/modeling_modifiers_generate_multiresolution_panel.png
|
24 |
+
:align: right
|
25 |
+
|
26 |
+
The Multiresolution modifier.
|
27 |
+
|
28 |
+
Type
|
29 |
+
Sets the type of subdivision.
|
30 |
+
|
31 |
+
Simple
|
32 |
+
Maintains the current shape, and simply subdivides edges.
|
33 |
+
Catmull-Clark
|
34 |
+
Creates a smooth surface, usually smaller than the original, using the standard
|
35 |
+
`Catmull-Clark <https://en.wikipedia.org/wiki/Catmull%E2%80%93Clark_subdivision_surface>`__
|
36 |
+
subdivision surface algorithm.
|
37 |
+
|
38 |
+
|
39 |
+
Levels
|
40 |
+
------
|
41 |
+
|
42 |
+
The left column of settings control the general quality generated by the modifier in various contexts.
|
43 |
+
|
44 |
+
Preview
|
45 |
+
Set the level of subdivisions to show in Object Mode.
|
46 |
+
Sculpt
|
47 |
+
Set the level of subdivisions to use in Sculpt Mode.
|
48 |
+
Render
|
49 |
+
Set the level of subdivisions to show when rendering.
|
50 |
+
Quality
|
51 |
+
How precisely the vertices are positioned (relatively to their theoretical position),
|
52 |
+
can be lowered to get a better performance when working on heavy meshes.
|
53 |
+
|
54 |
+
|
55 |
+
Operations
|
56 |
+
----------
|
57 |
+
|
58 |
+
The right column gathers several operators necessary to manage multi-resolution workflow.
|
59 |
+
|
60 |
+
Subdivide
|
61 |
+
Adds another level of subdivision.
|
62 |
+
Delete Higher
|
63 |
+
Deletes all subdivision levels that are higher than the current one.
|
64 |
+
Reshape
|
65 |
+
Copies vertex coordinates from another mesh.
|
66 |
+
|
67 |
+
To use it, first select a different mesh object with matching topology and vertex indices,
|
68 |
+
then :kbd:`Shift` select the object you wish to copy vertex coordinates to, and click *Reshape*.
|
69 |
+
|
70 |
+
Apply Base
|
71 |
+
Modifies the original unsubdivided mesh to match the form of the subdivided mesh.
|
72 |
+
|
73 |
+
|
74 |
+
Further Options
|
75 |
+
---------------
|
76 |
+
|
77 |
+
UV Smooth
|
78 |
+
How to handle UVs during subdivision.
|
79 |
+
|
80 |
+
Smooth, keep corners
|
81 |
+
UV islands are smoothed, but their boundary remain sharp.
|
82 |
+
Sharp
|
83 |
+
UV remain unchanged.
|
84 |
+
|
85 |
+
Subdivide UVs
|
86 |
+
When enabled, the UV maps will also be subdivided.
|
87 |
+
(I.e. Blender will add "virtual" coordinates for all sub-faces created by this modifier.)
|
88 |
+
Optimal Display
|
89 |
+
When rendering the wireframe of this object, the wires of the new subdivided edges will be skipped
|
90 |
+
(only displays the edges of the original geometry).
|
91 |
+
|
92 |
+
Save External
|
93 |
+
Saves displacements to an external ``.btx`` file.
|
ocean.rst.txt
ADDED
@@ -0,0 +1,220 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.. _bpy.types.OceanModifier:
|
2 |
+
|
3 |
+
**************
|
4 |
+
Ocean Modifier
|
5 |
+
**************
|
6 |
+
|
7 |
+
The *Ocean* modifier is a tool to simulate and generate a deforming ocean surface,
|
8 |
+
and associated texture, used to render the simulation data.
|
9 |
+
It is intended to simulate deep ocean waves and foam.
|
10 |
+
|
11 |
+
It is a port from the open source `Houdini Ocean Toolkit <https://code.google.com/archive/p/houdini-ocean-toolkit/>`__.
|
12 |
+
|
13 |
+
|
14 |
+
Options
|
15 |
+
=======
|
16 |
+
|
17 |
+
.. figure:: /images/modeling_modifiers_simulate_ocean_panel.png
|
18 |
+
:align: right
|
19 |
+
|
20 |
+
The Ocean modifier.
|
21 |
+
|
22 |
+
|
23 |
+
Geometry
|
24 |
+
--------
|
25 |
+
|
26 |
+
Geometry
|
27 |
+
Generate
|
28 |
+
Creates a tiled mesh grid that exactly corresponds with the resolution of the simulation data.
|
29 |
+
|
30 |
+
When generating a mesh surface, the existing mesh object is completely overridden with the ocean grid.
|
31 |
+
A UV channel is also added, mapping the (0.0 to 1.0) UV space to the simulation grid.
|
32 |
+
|
33 |
+
Repeat X, Repeat Y
|
34 |
+
Controls the number of times the grid is tiled in X and Y directions.
|
35 |
+
UVs for these tiled mesh areas continue outside of the (0.0 to 1.0) UV space.
|
36 |
+
|
37 |
+
Displace
|
38 |
+
Uses the existing geometry rather than replacing it. Vertices are displaced along the local Z axis.
|
39 |
+
|
40 |
+
Time
|
41 |
+
The time at which the ocean surface is being evaluated.
|
42 |
+
To make an animated ocean, you will need to :ref:`animate <bpy.ops.anim.keyframe_insert>` this value.
|
43 |
+
The speed that the time value is changing will determine the speed of the wave animation.
|
44 |
+
Depth
|
45 |
+
The constant depth of the ocean floor under the simulated area.
|
46 |
+
Lower values simulate shallower waters by producing
|
47 |
+
higher frequency details and smaller waves.
|
48 |
+
Random Seed
|
49 |
+
A different :term:`seed` will produce a different simulation result.
|
50 |
+
Resolution
|
51 |
+
The main control of quality vs speed in the simulation engine.
|
52 |
+
This determines the resolution of the internal 2D grids generated by the simulation.
|
53 |
+
|
54 |
+
The internal grids are powers of two of the resolution value,
|
55 |
+
so a resolution value of ``16``, will create simulation data of size ``256×256``.
|
56 |
+
The higher the resolution, the more details will be produced, but the slower it will be to calculate.
|
57 |
+
|
58 |
+
.. note::
|
59 |
+
|
60 |
+
When using the *Generate* modifier geometry option,
|
61 |
+
this resolution value also determines the resolution of the generated mesh surface,
|
62 |
+
equal to the resolution of the internal simulation data.
|
63 |
+
|
64 |
+
Size
|
65 |
+
A simple scaling factor that does not affect the height of the waves or behavior of the simulation.
|
66 |
+
Spatial Size
|
67 |
+
The width of the ocean surface area being simulated, in meters.
|
68 |
+
This also determines the size of the generated mesh, or the displaced area.
|
69 |
+
Of course, you can scale the object with the *Ocean* modifier in Object Mode
|
70 |
+
to tweak the apparent size in your scene.
|
71 |
+
|
72 |
+
|
73 |
+
Wave
|
74 |
+
----
|
75 |
+
|
76 |
+
Choppiness
|
77 |
+
The choppiness of the wave peaks.
|
78 |
+
With a choppiness of 0, the ocean surface is only displaced up and down in the Z direction,
|
79 |
+
but with higher choppiness, the waves are also displaced laterally in X and Y, to create sharper wave peaks.
|
80 |
+
Scale
|
81 |
+
An overall scale control for the amplitude of the waves.
|
82 |
+
It approximates the height or depth of the waves above or below zero.
|
83 |
+
|
84 |
+
Rather than just scaling the ocean object in Z, it scales all aspects of the simulation,
|
85 |
+
displacement in X and Y, and corresponding foam and normals too.
|
86 |
+
|
87 |
+
Alignment
|
88 |
+
The directionality of the wave shapes due to wind.
|
89 |
+
At a value of 0, the wind and waves are randomly, uniformly oriented.
|
90 |
+
|
91 |
+
With higher *Alignment* values, the wind is blowing in a more constant direction,
|
92 |
+
making the waves appear more compressed and aligned to a single direction.
|
93 |
+
|
94 |
+
Direction
|
95 |
+
When using *Alignment*, the direction in degrees that the waves are aligned to (using local X axis as reference).
|
96 |
+
Damping
|
97 |
+
When using *Alignment*, this will define the amount that inter-reflected waves are damped out.
|
98 |
+
This has the effect of making the wave motion more directional (not just the wave shape).
|
99 |
+
|
100 |
+
With a *Damping* of 0.0, waves are reflected off each other in every direction, with a *Damping* of 1.0,
|
101 |
+
these inter-reflected waves are damped out, leaving only waves traveling in the direction of the wind.
|
102 |
+
|
103 |
+
Smallest Wave
|
104 |
+
A minimum limit for the size of generated waves.
|
105 |
+
Acts similarly to a low-pass filter, removing higher frequency wave detail.
|
106 |
+
Wind Velocity
|
107 |
+
Wind speed in meters/second. With a low velocity, waves are restricted to smaller surface waves.
|
108 |
+
|
109 |
+
|
110 |
+
Simulation Data Generation Options
|
111 |
+
----------------------------------
|
112 |
+
|
113 |
+
.. figure:: /images/modeling_modifiers_simulate_ocean_foam-layer-name.png
|
114 |
+
:width: 640px
|
115 |
+
:align: center
|
116 |
+
|
117 |
+
Using foam vertex colors with a named data layer.
|
118 |
+
|
119 |
+
By default, the simulator only generates displacement data,
|
120 |
+
since it takes the least amount of work and gives the fastest feedback.
|
121 |
+
Additional simulation data can be generated for rendering as well.
|
122 |
+
|
123 |
+
Generate Normals
|
124 |
+
Simulates additional normal map data.
|
125 |
+
|
126 |
+
This can be used by the Ocean texture, when mapped to Normals,
|
127 |
+
as a bump map, and enables generating normal map image sequences when baking.
|
128 |
+
|
129 |
+
Generate Foam
|
130 |
+
Simulates additional foam data.
|
131 |
+
|
132 |
+
This can be retrieved by the Ocean texture for use in texturing (perhaps as a mask),
|
133 |
+
and enables generating foam map image sequences when baking.
|
134 |
+
|
135 |
+
Coverage
|
136 |
+
Tweaks the amount of foam covering the waves, negative values will reduce the amount of foam
|
137 |
+
(leaving only the topmost peaks), positive values will add to it. Typically ranges from (-1.0 to 1.0).
|
138 |
+
|
139 |
+
Foam Data Layer Name
|
140 |
+
Optional name for the vertex data layer,
|
141 |
+
used by the Ocean Modifier to store foam maps as vertex colors.
|
142 |
+
This is required for accessing the foam data in the renderer.
|
143 |
+
|
144 |
+
|
145 |
+
Baking
|
146 |
+
======
|
147 |
+
|
148 |
+
Rather than simulating the ocean data live, it can be baked to files in a given directory.
|
149 |
+
When a simulation is baked, the simulator engine is completely bypassed,
|
150 |
+
and the modifier/texture retrieves all information from the baked files.
|
151 |
+
|
152 |
+
Baking can be advantageous for a few reasons:
|
153 |
+
|
154 |
+
- It is faster to use the stored data rather than re-calculating it.
|
155 |
+
- It allows rendering of ocean data in external renderers.
|
156 |
+
- It enables more advanced foam maps.
|
157 |
+
|
158 |
+
|
159 |
+
Data Files
|
160 |
+
----------
|
161 |
+
|
162 |
+
Simulation data is stored as sequences of ``OpenEXR`` image maps,
|
163 |
+
one for each of displacement, normals, and foam (if enabled to be generated).
|
164 |
+
Upon loading the data from these baked files, when a frame of the bake sequence is read,
|
165 |
+
it is cached in memory. This means that accessing loaded frames subsequent times is fast,
|
166 |
+
not incurring the overhead of drive access.
|
167 |
+
|
168 |
+
Since these baked files are plain ``OpenEXR``\ 's,
|
169 |
+
they can also be opened and rendered in any other application or renderer that supports them.
|
170 |
+
|
171 |
+
|
172 |
+
Baking Foam
|
173 |
+
-----------
|
174 |
+
|
175 |
+
Baking also provides improved foam capabilities. When simulating live,
|
176 |
+
the ocean simulator retrieves data for that current frame only. In the case of the foam map,
|
177 |
+
this represents the tips of wave crests for that given frame. In reality,
|
178 |
+
after foam is created by wave interactions,
|
179 |
+
it remains sitting on the top of the wave surface for a while, as it dissipates. With baking,
|
180 |
+
it is possible to approximate that behavior, by accumulating foam from previous frames,
|
181 |
+
leaving it remaining on the surface.
|
182 |
+
|
183 |
+
.. vimeo:: 17517981
|
184 |
+
:width: 500
|
185 |
+
:height: 256
|
186 |
+
|
187 |
+
|
188 |
+
Baking Options
|
189 |
+
--------------
|
190 |
+
|
191 |
+
Start, End
|
192 |
+
Frames of the simulation to bake (inclusive).
|
193 |
+
The start and end frames of the bake are repeated when accessing frames outside of the baked range.
|
194 |
+
Cache Path
|
195 |
+
Folder to store the baked EXR files in.
|
196 |
+
The sequences will be in the form ``disp_####.exr``, ``normal_####.exr``,
|
197 |
+
and ``foam_####.exr``, where ``####`` is the four digit frame number.
|
198 |
+
If the cache path folder does not exist, it will be created.
|
199 |
+
|
200 |
+
|
201 |
+
Simulation Internals
|
202 |
+
====================
|
203 |
+
|
204 |
+
The simulator itself uses FFT methods to generate 2D grids of simulation information internally,
|
205 |
+
very similar to 2D texture maps.
|
206 |
+
The simulator can generate three types of data: displacement, normals,
|
207 |
+
and extra data, that is used to calculate wave crest intersections (i.e. foam).
|
208 |
+
After simulation, these maps are used to displace the ocean surface geometry in 3D,
|
209 |
+
and also can be used for shading via the Ocean texture. The internal simulation engine is
|
210 |
+
multi threaded with OpenMP to take advantage of multiple cores.
|
211 |
+
|
212 |
+
|
213 |
+
Examples
|
214 |
+
========
|
215 |
+
|
216 |
+
.. vimeo:: 18911131
|
217 |
+
:width: 500
|
218 |
+
:height: 256
|
219 |
+
|
220 |
+
Simulated and baked to image maps in Blender, rendered in 3Delight.
|
particle_instance.rst.txt
ADDED
@@ -0,0 +1,194 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.. _bpy.types.ParticleInstanceModifier:
|
2 |
+
|
3 |
+
**************************
|
4 |
+
Particle Instance Modifier
|
5 |
+
**************************
|
6 |
+
|
7 |
+
When a *Particle Instance* modifier is added to an object,
|
8 |
+
the mesh of this object will be duplicated
|
9 |
+
at the location of the particles of the selected *Particle System* from another target object.
|
10 |
+
This means that to use this modifier, you must have at least one other object
|
11 |
+
that has a :doc:`Particles System </physics/particles/index>` on it.
|
12 |
+
|
13 |
+
Because of the correlation in which the *Particle Instance* modifier is
|
14 |
+
influenced by the underlying particle systems on other objects, some of the apparent effects
|
15 |
+
generated by the modifier can look and act vastly different,
|
16 |
+
depending on the underlying settings of the particle systems it is associated with.
|
17 |
+
This is worth taking account of, when it seems that the *Particle Instance* modifier settings
|
18 |
+
do not return the expected results.
|
19 |
+
|
20 |
+
|
21 |
+
Options
|
22 |
+
=======
|
23 |
+
|
24 |
+
.. figure:: /images/modeling_modifiers_simulate_particle-instance_panel.png
|
25 |
+
:align: right
|
26 |
+
|
27 |
+
The Particle Instance modifier.
|
28 |
+
|
29 |
+
Object
|
30 |
+
The target object which has a particle system associated with it.
|
31 |
+
Particle System
|
32 |
+
Which particle system from the target *Object* to apply this modifier to.
|
33 |
+
|
34 |
+
|
35 |
+
Create From
|
36 |
+
-----------
|
37 |
+
|
38 |
+
Normal
|
39 |
+
When enabled, the modifier will use the regular (parents) particles
|
40 |
+
to duplicate the mesh of the modified object.
|
41 |
+
Children
|
42 |
+
When enabled, the modifier will use the :doc:`children </physics/particles/emitter/children>` particles
|
43 |
+
to duplicate the mesh of the modified object.
|
44 |
+
Size
|
45 |
+
Scale the instanced copies of the mesh by the particle size attribute.
|
46 |
+
When this is disabled, all the copies appear the same size as the origin.
|
47 |
+
|
48 |
+
See the particle system's :doc:`Render </physics/particles/emitter/render>`
|
49 |
+
and :doc:`Children </physics/particles/emitter/children>` panels for particle's size options.
|
50 |
+
|
51 |
+
|
52 |
+
Show Particles When
|
53 |
+
-------------------
|
54 |
+
|
55 |
+
Unborn
|
56 |
+
When enabled, the modifier will use the unborn particles
|
57 |
+
to duplicate the mesh of the modified object.
|
58 |
+
Alive
|
59 |
+
When enabled, the modifier will use the alive particles
|
60 |
+
to duplicate the mesh of the modified object.
|
61 |
+
Dead
|
62 |
+
When enabled, the modifier will use the dead particles
|
63 |
+
to duplicate the mesh of the modified object.
|
64 |
+
|
65 |
+
|
66 |
+
Further Options
|
67 |
+
---------------
|
68 |
+
|
69 |
+
Space
|
70 |
+
World, Local
|
71 |
+
Use :term:`World Space`, or :term:`Local Space` of the target object (that the particle system is assigned to).
|
72 |
+
|
73 |
+
- World space means that the locations of the copies of the modified mesh will depend
|
74 |
+
on the location of the modified object **and** of the target object.
|
75 |
+
- Local space means that the locations of the copies of the modified mesh will depend
|
76 |
+
only on the location of the modified object.
|
77 |
+
|
78 |
+
Amount
|
79 |
+
The proportion of particles to be used.
|
80 |
+
Allows you to **randomly** skip particles to adjust the amount of instances.
|
81 |
+
|
82 |
+
.. warning::
|
83 |
+
|
84 |
+
The random algorithm used currently only ensures that relative amount to be respected *statistically*.
|
85 |
+
The actual amount of instances generated will differ from the theoretical one,
|
86 |
+
depending on the *Seed* value of the target particle system (and the *Offset* value described below, too).
|
87 |
+
|
88 |
+
That deviation is not significant with high number of particles,
|
89 |
+
but it will be highly noticeable with low numbers
|
90 |
+
(e.g. with 100 particles in the target system, and an *Amount* value of ``0.1``,
|
91 |
+
it can generate either up to 15 or 5 instances, instead of the 10 expected).
|
92 |
+
|
93 |
+
Offset
|
94 |
+
A relative offset in the range of particles used for instantiation.
|
95 |
+
Allows you to avoid overlapping of the used particles,
|
96 |
+
when the same particle system is used in multiple modifier instances.
|
97 |
+
|
98 |
+
.. tip::
|
99 |
+
|
100 |
+
If you want to fully avoid overlaps, your *Offset* value must be at least as high as your *Amount* value.
|
101 |
+
|
102 |
+
Rotation Axis X/Y/Z
|
103 |
+
Specify which axis of the modified object to use as pole axis to apply
|
104 |
+
the rotation from the instantiated particles.
|
105 |
+
|
106 |
+
|
107 |
+
Using Paths
|
108 |
+
-----------
|
109 |
+
|
110 |
+
By default, the instances are placed depending on the particles position in the current frame.
|
111 |
+
By enabling this option, you can select the position along the particles path regardless of the current frame.
|
112 |
+
|
113 |
+
You can adjust the particles' path (using the *Path* visualization type)
|
114 |
+
on the :doc:`Render </physics/particles/emitter/render>` panel of the *Particle System* tab.
|
115 |
+
|
116 |
+
.. note::
|
117 |
+
|
118 |
+
The particle system must be :doc:`baked </physics/baking>`, except for *Hair* type or *Keyed* physics.
|
119 |
+
|
120 |
+
Create Along Paths
|
121 |
+
This option tries to make the instance of the modified object to follow,
|
122 |
+
to deform its shape along the particle path (or the hair strand).
|
123 |
+
Keep Shape
|
124 |
+
Enabling this prevents the instance from being deformed,
|
125 |
+
and places it on the path according to the *Position* value.
|
126 |
+
Position
|
127 |
+
Specify what percentage of the path the instance fills,
|
128 |
+
or the position on the path if the *Keep Shape* option is enabled.
|
129 |
+
|
130 |
+
Random
|
131 |
+
Adds some randomness to the *Position* value of each instance.
|
132 |
+
|
133 |
+
Rotation
|
134 |
+
Specifies the rotation around the path.
|
135 |
+
|
136 |
+
Random
|
137 |
+
Adds some randomness to the *Rotation* value of each instance.
|
138 |
+
|
139 |
+
|
140 |
+
Custom Data Layers
|
141 |
+
------------------
|
142 |
+
|
143 |
+
These fields allow you to select vertex color layers,
|
144 |
+
which will be filled with colors based on the particles information.
|
145 |
+
These vertex color layers can be used, for example, in a shader to add variance to a material.
|
146 |
+
|
147 |
+
Index Layer
|
148 |
+
A vertex color layer for values based on the particles index.
|
149 |
+
Value Layer
|
150 |
+
A vertex color layer for random per-particle values.
|
151 |
+
|
152 |
+
|
153 |
+
Examples
|
154 |
+
========
|
155 |
+
|
156 |
+
.. figure:: /images/modeling_modifiers_simulate_particle-instance_split-plane.jpg
|
157 |
+
:width: 600px
|
158 |
+
:align: center
|
159 |
+
|
160 |
+
Particle Instance modifier example.
|
161 |
+
|
162 |
+
The render above shows a single plane mesh object assigned to two different vertex groups
|
163 |
+
and each of those vertex groups is assigned to a separate and independent particle system,
|
164 |
+
with each particle system being assigned to a different *Particle Instance* modifier.
|
165 |
+
In the case shown the *Particle Instance* modifiers are added to a sphere and a cube.
|
166 |
+
See `example blend-file
|
167 |
+
<https://en.blender.org/uploads/4/48/Manual_-_Modifiers_-_Particle_Instance_Modifiers_-_Split_Plane.blend>`__.
|
168 |
+
|
169 |
+
.. figure:: /images/modeling_modifiers_simulate_particle-instance_create-along-paths.jpg
|
170 |
+
:width: 600px
|
171 |
+
:align: center
|
172 |
+
|
173 |
+
Create Along Path example.
|
174 |
+
|
175 |
+
In this example, a single *Keyed* particle travels through four points (green planes),
|
176 |
+
on an elliptical path. The *Particle Instance* modifier is added to a cylinder object
|
177 |
+
and then associated with that *Keyed* particle system.
|
178 |
+
|
179 |
+
When the *Create Along Paths* is activated,
|
180 |
+
instead of the cylinder location just following the position of the particle,
|
181 |
+
the cylinder mesh is fitted to the shape of the path followed by the particle.
|
182 |
+
The mesh geometry of the object which is deformed
|
183 |
+
can have an impact on how well the deformation is carried out.
|
184 |
+
In the case of the cylinder, it has many loop cuts along its length so
|
185 |
+
that it can bend at those points to deform along the particle path.
|
186 |
+
|
187 |
+
The *Particle Instance* modifier *Create Along Paths* feature works for hair (strand)
|
188 |
+
particles as well as with keyed particles. In this case, the mesh of the *Particle Instance* modifier
|
189 |
+
will follow the length and profile of the hair strands paths.
|
190 |
+
|
191 |
+
.. note::
|
192 |
+
|
193 |
+
Strands, when they are generated, instantly die when created, so for the *Create Along Paths* checkbox
|
194 |
+
to be of any use, you must also have the *Dead* checkbox enabled.
|
remesh.rst.txt
ADDED
@@ -0,0 +1,98 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.. _bpy.types.RemeshModifier:
|
2 |
+
|
3 |
+
***************
|
4 |
+
Remesh Modifier
|
5 |
+
***************
|
6 |
+
|
7 |
+
The *Remesh* modifier is a tool for generating new mesh topology.
|
8 |
+
The output follows the surface curvature of the input, but its topology contains only quads.
|
9 |
+
|
10 |
+
|
11 |
+
Options
|
12 |
+
=======
|
13 |
+
|
14 |
+
.. figure:: /images/modeling_modifiers_generate_remesh_panel.png
|
15 |
+
:align: right
|
16 |
+
|
17 |
+
The Remesh modifier.
|
18 |
+
|
19 |
+
Mode
|
20 |
+
There are three basic modes available in the *Remesh* modifier.
|
21 |
+
The output topology is almost identical between the three modes, what changes is the smoothing.
|
22 |
+
|
23 |
+
Blocks
|
24 |
+
There is no smoothing at all.
|
25 |
+
Smooth
|
26 |
+
Output a smooth surface.
|
27 |
+
Sharp
|
28 |
+
Similar to *Smooth*, but preserves sharp edges and corners.
|
29 |
+
|
30 |
+
Octree Depth
|
31 |
+
Sets the resolution of the output. Low values will generate larger faces relative to the input,
|
32 |
+
higher values will generate a denser output.
|
33 |
+
Scale
|
34 |
+
The result can be tweaked further by this, lower values effectively decrease the output resolution.
|
35 |
+
Sharpness
|
36 |
+
Shown when using the *Sharp Mode*. Higher values produce edges more similar to the input,
|
37 |
+
while lower values filter out noise.
|
38 |
+
Smooth Shading
|
39 |
+
Output faces with smooth shading rather than flat shading.
|
40 |
+
The smooth/flat shading of the input faces is not preserved.
|
41 |
+
Remove Disconnected Pieces
|
42 |
+
Filter out small disconnected pieces of the output.
|
43 |
+
|
44 |
+
Thin parts of the input mesh can become lose, and generate small isolated bits of mesh.
|
45 |
+
This option will remove those.
|
46 |
+
|
47 |
+
Threshold
|
48 |
+
Use this to control how small a disconnected component must be to be removed.
|
49 |
+
|
50 |
+
.. note::
|
51 |
+
|
52 |
+
The input mesh should have some thickness to it. If the input is completely flat,
|
53 |
+
add a :doc:`Solidify Modifier </modeling/modifiers/generate/solidify>` above the *Remesh* one.
|
54 |
+
|
55 |
+
|
56 |
+
Examples
|
57 |
+
========
|
58 |
+
|
59 |
+
.. list-table::
|
60 |
+
|
61 |
+
* - .. figure:: /images/modeling_modifiers_generate_remesh_example-none.png
|
62 |
+
:width: 320px
|
63 |
+
|
64 |
+
Unmodified mesh.
|
65 |
+
|
66 |
+
- .. figure:: /images/modeling_modifiers_generate_remesh_example-blocks-depth-3.png
|
67 |
+
:width: 320px
|
68 |
+
|
69 |
+
Blocks mode with Octree Depth 3.
|
70 |
+
|
71 |
+
- .. figure:: /images/modeling_modifiers_generate_remesh_example-smooth-depth-3.png
|
72 |
+
:width: 320px
|
73 |
+
|
74 |
+
Smooth mode with Octree Depth 3.
|
75 |
+
|
76 |
+
* - .. figure:: /images/modeling_modifiers_generate_remesh_example-sharp-depth-2.png
|
77 |
+
:width: 320px
|
78 |
+
|
79 |
+
Sharp mode with Octree Depth 2.
|
80 |
+
|
81 |
+
- .. figure:: /images/modeling_modifiers_generate_remesh_example-sharp-depth-3.png
|
82 |
+
:width: 320px
|
83 |
+
|
84 |
+
Sharp mode with Octree Depth 3.
|
85 |
+
|
86 |
+
- .. figure:: /images/modeling_modifiers_generate_remesh_example-sharp-depth-4.png
|
87 |
+
:width: 320px
|
88 |
+
|
89 |
+
Sharp mode with Octree Depth 4.
|
90 |
+
|
91 |
+
.. figure:: /images/modeling_modifiers_generate_remesh_example-text-topology.png
|
92 |
+
:width: 520px
|
93 |
+
|
94 |
+
The Remesh Modifier applied to a text to improve its topology.
|
95 |
+
|
96 |
+
.. youtube:: Mh-gUnS2c0Y
|
97 |
+
|
98 |
+
.. vimeo:: 21096739
|
screw.rst.txt
ADDED
@@ -0,0 +1,61 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.. _bpy.types.ScrewModifier:
|
2 |
+
|
3 |
+
**************
|
4 |
+
Screw Modifier
|
5 |
+
**************
|
6 |
+
|
7 |
+
The *Screw* modifier is similar to the :doc:`Screw </modeling/meshes/editing/duplicating/screw>` tool
|
8 |
+
in the *Toolbar*, in that it takes a profile object, a mesh or a curve, to create a helix-like shape.
|
9 |
+
|
10 |
+
.. figure:: /images/modeling_modifiers_generate_screw_align.png
|
11 |
+
:width: 540px
|
12 |
+
|
13 |
+
Properly aligning the profile object is important.
|
14 |
+
|
15 |
+
The profile should be properly aligned to the cardinal direction of the object rather than to the screw axis.
|
16 |
+
|
17 |
+
|
18 |
+
Options
|
19 |
+
=======
|
20 |
+
|
21 |
+
.. figure:: /images/modeling_modifiers_generate_screw_panel.png
|
22 |
+
:align: right
|
23 |
+
|
24 |
+
The Screw modifier.
|
25 |
+
|
26 |
+
Axis
|
27 |
+
The axis along which the helix will be built.
|
28 |
+
|
29 |
+
Screw
|
30 |
+
The height of one helix iteration.
|
31 |
+
|
32 |
+
Axis Object
|
33 |
+
The name of an object to define the axis direction.
|
34 |
+
|
35 |
+
Object Screw
|
36 |
+
Use the distance from the *Axis Object* to define the height of one helix iteration.
|
37 |
+
|
38 |
+
Angle
|
39 |
+
Degrees for a single helix revolution.
|
40 |
+
Steps
|
41 |
+
Number of steps used for a single revolution displayed in the 3D View. Beware of setting this higher than
|
42 |
+
*Render Steps*, which is the value used for rendering.
|
43 |
+
Render Steps
|
44 |
+
As above, but used during render time. Increase to improve quality.
|
45 |
+
Smooth Shading
|
46 |
+
Output faces with smooth shading rather than flat shading.
|
47 |
+
The smooth/flat shading of the input geometry is not preserved.
|
48 |
+
Calc Order
|
49 |
+
Order of edges is calculated to avoid problems with normals and shading. Only needed for meshes, not curves.
|
50 |
+
Flip
|
51 |
+
Flip normals direction.
|
52 |
+
Iterations
|
53 |
+
Number of revolutions.
|
54 |
+
Stretch U/V
|
55 |
+
Stretch the UV coordinates from (0.0 to 1.0) when UVs are present.
|
56 |
+
Merge Vertices
|
57 |
+
Merge vertices that lie on the axis of rotation.
|
58 |
+
Use this to close off end points with a triangle fan.
|
59 |
+
|
60 |
+
Merge Distance
|
61 |
+
Vertices under this distance to the axis are merged.
|
skin.rst.txt
ADDED
@@ -0,0 +1,144 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.. _bpy.types.SkinModifier:
|
2 |
+
|
3 |
+
*************
|
4 |
+
Skin Modifier
|
5 |
+
*************
|
6 |
+
|
7 |
+
The *Skin* modifier uses vertices and edges to create a skinned surface,
|
8 |
+
using a per-vertex radius to better define the shape.
|
9 |
+
The output is mostly quads, although some triangles will appear around intersections.
|
10 |
+
|
11 |
+
It is a quick way to generate base meshes for sculpting and/or smooth organic shapes with
|
12 |
+
arbitrary topology.
|
13 |
+
|
14 |
+
.. note::
|
15 |
+
|
16 |
+
Faces in the original geometry are ignored.
|
17 |
+
|
18 |
+
|
19 |
+
Options
|
20 |
+
=======
|
21 |
+
|
22 |
+
.. figure:: /images/modeling_modifiers_generate_skin_panel.png
|
23 |
+
:align: right
|
24 |
+
|
25 |
+
The Skin modifier.
|
26 |
+
|
27 |
+
Branch Smoothing
|
28 |
+
A branch point is a vertex with three or more connected edges.
|
29 |
+
These areas tend to produce more complicated topology, some of which may overlap.
|
30 |
+
This setting relaxes the surface around these points,
|
31 |
+
with the side effect of shrinking it.
|
32 |
+
|
33 |
+
Smooth Shading
|
34 |
+
Output faces with smooth shading rather than flat shading.
|
35 |
+
The smooth/flat shading of the input geometry is not preserved.
|
36 |
+
|
37 |
+
Symmetry Axes X/Y/Z
|
38 |
+
These checkboxes are used to keep the output topology symmetrical in their respective axes.
|
39 |
+
In other words, using it avoids merging triangles across an axis unless the triangles form a symmetric quad.
|
40 |
+
|
41 |
+
.. note::
|
42 |
+
|
43 |
+
They do not add geometry flipped across an axis.
|
44 |
+
For that, the :doc:`Mirror </modeling/modifiers/generate/mirror>` modifier should be used,
|
45 |
+
typically placed above the *Skin* one.
|
46 |
+
|
47 |
+
|
48 |
+
Add Skin Data
|
49 |
+
-------------
|
50 |
+
|
51 |
+
This modifier uses a :ref:`custom set of data <modeling-modifiers-generate-skin-data>` in the mesh,
|
52 |
+
that is generated automatically when you add the modifier the first time.
|
53 |
+
|
54 |
+
However, you may remove that data, or loose it some way or the other. That operator will generate it again.
|
55 |
+
|
56 |
+
|
57 |
+
Selected Vertices
|
58 |
+
-----------------
|
59 |
+
|
60 |
+
Those operators modify the original mesh 'control data' for the *Skin* modifier. They help manage its behavior.
|
61 |
+
|
62 |
+
Mark/Clear Loose
|
63 |
+
By default, a branch vertex (vertex with three or more connected edges)
|
64 |
+
will generate extra edge loops along adjacent edges in order to keep the output tight.
|
65 |
+
Branches can be made loose by clicking *Mark Loose*, which will allow the output to stretch between
|
66 |
+
all adjacent vertices. This can be disabled again by clicking *Clear Loose*.
|
67 |
+
Mark Root
|
68 |
+
Marking a vertex as root causes that vertex to be used for calculating rotations for connected limbs.
|
69 |
+
Root vertices also affect the armature output, they will be used as the origin for the root bones.
|
70 |
+
|
71 |
+
..
|
72 |
+
Not true anymore:
|
73 |
+
Roots are shown in the *3D View* with a red dashed circle around the vertex.
|
74 |
+
|
75 |
+
Each set of connected vertices should have one root node
|
76 |
+
(one is selected by default if you do not assign any manually).
|
77 |
+
*Mark Root* enforces the one-root per set rule, so it is not necessary to manually unmark roots.
|
78 |
+
|
79 |
+
Equalize Radii
|
80 |
+
Makes the skin radii of selected vertices equal on each axis.
|
81 |
+
|
82 |
+
|
83 |
+
Create Armature
|
84 |
+
---------------
|
85 |
+
|
86 |
+
Create an armature on top of the object. Each edge becomes a bone.
|
87 |
+
|
88 |
+
.. note::
|
89 |
+
|
90 |
+
If the root vertex has more than one adjacent edge,
|
91 |
+
an extra bone will be created to serve as the root.
|
92 |
+
|
93 |
+
This tool does the following:
|
94 |
+
|
95 |
+
#. A new armature object is added with bones matching the input mesh.
|
96 |
+
The active selection is switched to the new armature.
|
97 |
+
#. Weight groups are added to the input mesh. The *Skin* modifier propagates these weights to the output as well.
|
98 |
+
#. An :doc:`Armature </modeling/modifiers/deform/armature>` modifier is added directly below the *Skin* one.
|
99 |
+
Note that the *Armature* modifier is being applied after
|
100 |
+
the *Skin* one because it should only deform the output,
|
101 |
+
whereas if it were above, it might change the resulting topology.
|
102 |
+
|
103 |
+
|
104 |
+
.. _modeling-modifiers-generate-skin-data:
|
105 |
+
|
106 |
+
Skin Mesh Data
|
107 |
+
==============
|
108 |
+
|
109 |
+
That modifier needs a set of specific data in the original mesh to work properly.
|
110 |
+
This data allows to define the root vertices of each tree, which ones are loose (see `Selected Vertices`_ above),
|
111 |
+
and the size (radius) of the skin at each vertex.
|
112 |
+
|
113 |
+
|
114 |
+
Skin Size
|
115 |
+
---------
|
116 |
+
|
117 |
+
The radii of input vertices can be individually scaled in Edit Mode by pressing :kbd:`Ctrl-A`.
|
118 |
+
Non-uniform scaling of the X and Y axes is accessible by the usual axis locking with :kbd:`X` or :kbd:`Y`.
|
119 |
+
The radius can also be adjusted in the *Transform* panel of the Sidebar, in the 3D View.
|
120 |
+
|
121 |
+
|
122 |
+
Examples
|
123 |
+
========
|
124 |
+
|
125 |
+
.. _fig-modifier-skin-creature:
|
126 |
+
|
127 |
+
.. figure:: /images/modeling_modifiers_generate_skin_example.png
|
128 |
+
|
129 |
+
Simple creature, made with only the Skin and Subdivision Surface modifiers.
|
130 |
+
|
131 |
+
|
132 |
+
External Links
|
133 |
+
==============
|
134 |
+
|
135 |
+
- `Skin Modifier Development at Blender Nation
|
136 |
+
<http://www.blendernation.com/2011/03/11/skin-modifier-development/>`__ --
|
137 |
+
An early demonstration of the Skin Modifier by Nicholas Bishop (March 2011).
|
138 |
+
- Ji, Zhongping; Liu, Ligang; Wang, Yigang (2010).
|
139 |
+
`B-Mesh: A Fast Modeling System for Base Meshes of 3D Articulated Shapes
|
140 |
+
<http://www.math.zju.edu.cn/ligangliu/CAGD/Projects/BMesh/>`__,
|
141 |
+
Computer Graphics Forum 29(7), pp. 2169-2178. -- The work this modifier is based on
|
142 |
+
(`direct link to PDF <http://www.math.zju.edu.cn/ligangliu/cagd/projects/bmesh/paper/bmesh.pdf>`__).
|
143 |
+
- `Related thread on Blender artists
|
144 |
+
<http://blenderartists.org/forum/showthread.php?209551-B-mesh-modeling-tools-papers-better-than-zsfere>`__.
|
solidify.rst.txt
ADDED
@@ -0,0 +1,110 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.. _bpy.types.SolidifyModifier:
|
2 |
+
|
3 |
+
*****************
|
4 |
+
Solidify Modifier
|
5 |
+
*****************
|
6 |
+
|
7 |
+
The *Solidify* modifier takes the surface of any mesh and adds depth, thickness to it.
|
8 |
+
|
9 |
+
|
10 |
+
Options
|
11 |
+
=======
|
12 |
+
|
13 |
+
.. figure:: /images/modeling_modifiers_generate_solidify_panel.png
|
14 |
+
:align: right
|
15 |
+
|
16 |
+
The Solidify modifier.
|
17 |
+
|
18 |
+
Thickness
|
19 |
+
The depth to be solidified.
|
20 |
+
Offset
|
21 |
+
A value between (-1 to 1) to locate the solidified output inside or outside the original mesh.
|
22 |
+
Set to 0.0, the solidified output will be centered on the original mesh.
|
23 |
+
Clamp
|
24 |
+
A value between (0 to 2) to clamp offsets to avoid self-intersection.
|
25 |
+
|
26 |
+
.. figure:: /images/modeling_modifiers_generate_solidify_clamp.png
|
27 |
+
|
28 |
+
Clamp Offset.
|
29 |
+
|
30 |
+
Vertex Group
|
31 |
+
Only vertices in this group are solidified. Their weights are multiplied by the thickness,
|
32 |
+
so vertices with lower weights will be less thick.
|
33 |
+
|
34 |
+
Invert
|
35 |
+
Reverses the vertex group, so that only vertices which are **not** in the vertex group are solidified.
|
36 |
+
Factor
|
37 |
+
How much the vertex weights are taken into account.
|
38 |
+
|
39 |
+
- On 0.0 , vertices with zero weight will have no thickness at all.
|
40 |
+
- On 0.5 , vertices with zero weight will be half as thick as those with full weight.
|
41 |
+
- On 1.0 , the weights are ignored and the *Thickness* value is used for every vertex.
|
42 |
+
|
43 |
+
Crease
|
44 |
+
These options are intended for usage with
|
45 |
+
the :doc:`Subdivision Surface </modeling/modifiers/generate/subdivision_surface>` modifier.
|
46 |
+
|
47 |
+
.. figure:: /images/modeling_modifiers_generate_solidify_rims.png
|
48 |
+
:width: 350px
|
49 |
+
|
50 |
+
Rim and edges. In this example, the object was assigned a second material used to color the rim red.
|
51 |
+
|
52 |
+
Inner
|
53 |
+
Set a crease to the inner edges.
|
54 |
+
Outer
|
55 |
+
Set a crease to the outer edges.
|
56 |
+
Rim
|
57 |
+
Set a crease to the rim.
|
58 |
+
|
59 |
+
Flip Normals
|
60 |
+
Reverse the normals of all geometry (both the inner and outer surfaces).
|
61 |
+
Even Thickness
|
62 |
+
Maintain thickness by adjusting for sharp corners.
|
63 |
+
Sometimes improves quality but also increases computation time.
|
64 |
+
High Quality Normals
|
65 |
+
Normals are calculated to produce a more even thickness.
|
66 |
+
Sometimes improves quality but also increases computation time.
|
67 |
+
Fill Rim
|
68 |
+
Fills the gap between the inner and outer edges.
|
69 |
+
Only Rim
|
70 |
+
Will not extrude surfaces parallel to the original one, but instead will only generate the perpendicular rim.
|
71 |
+
|
72 |
+
.. note::
|
73 |
+
|
74 |
+
*Fill Rim* and *Only Rim* only make a difference on :term:`non-manifold` objects,
|
75 |
+
since the rims are generated from the borders of the original geometry.
|
76 |
+
|
77 |
+
Material Index Offset
|
78 |
+
Choose a different material to use for the new geometry.
|
79 |
+
This is applied as an offset from the original material of the face from which it was solidified.
|
80 |
+
|
81 |
+
- A value of 0 means it will use the same material.
|
82 |
+
- A value of 1 means it will use the material immediately below the original material.
|
83 |
+
- A value of -2 means the material two positions above the original material will be used.
|
84 |
+
|
85 |
+
These are clamped to the top-most and bottom-most material slots.
|
86 |
+
|
87 |
+
Rim
|
88 |
+
Similarly, you can give another material to the rim faces.
|
89 |
+
|
90 |
+
.. important::
|
91 |
+
|
92 |
+
The modifier thickness is calculated using local vertex coordinates. If the object has non-uniform scale,
|
93 |
+
the thickness will vary on different sides of the object.
|
94 |
+
|
95 |
+
To fix this, either :ref:`apply <bpy.ops.object.transform_apply>`
|
96 |
+
or :ref:`clear <bpy.ops.object.*clear>` the scale.
|
97 |
+
|
98 |
+
|
99 |
+
Known Limitations
|
100 |
+
=================
|
101 |
+
|
102 |
+
Even Thickness
|
103 |
+
--------------
|
104 |
+
|
105 |
+
Solidify thickness is an approximation.
|
106 |
+
While *Even Thickness* and *High Quality Normals* should yield good results,
|
107 |
+
the final wall thickness is not guaranteed and may vary depending on the mesh topology.
|
108 |
+
|
109 |
+
In order to maintain precise wall thickness in every case, we would need to add/remove faces on the offset shell,
|
110 |
+
something this modifier does not do since this would add a lot of complexity and slow it down.
|
subdivision_surface.rst.txt
ADDED
@@ -0,0 +1,184 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.. _bpy.types.SubsurfModifier:
|
2 |
+
|
3 |
+
****************************
|
4 |
+
Subdivision Surface Modifier
|
5 |
+
****************************
|
6 |
+
|
7 |
+
The *Subdivision Surface* modifier (often shorten to "Subdiv")
|
8 |
+
is used to split the faces of a mesh into smaller faces, giving it a smooth appearance.
|
9 |
+
It enables you to create complex smooth surfaces while modeling simple, low-vertex meshes.
|
10 |
+
It avoids the need to save and maintain huge amounts of data,
|
11 |
+
and gives a smooth "organic" look to the object.
|
12 |
+
|
13 |
+
As with any modifier, order of execution (position in the :ref:`modifier stack <modifier-stack>`)
|
14 |
+
has an important bearing on the results.
|
15 |
+
|
16 |
+
Keep in mind that this is a different operation than its companion,
|
17 |
+
:ref:`Smooth Shading <modeling-meshes-editing-normals-shading>`.
|
18 |
+
You can see the difference between the two in the grid image below.
|
19 |
+
|
20 |
+
.. figure:: /images/modeling_modifiers_generate_subdivision-surface_grid.png
|
21 |
+
|
22 |
+
Subdivision levels 0 to 3, without and with Smooth Shading.
|
23 |
+
|
24 |
+
.. tip::
|
25 |
+
|
26 |
+
The *Subdivision Surface* modifier does not allow you to edit the new subdivided geometry without applying it,
|
27 |
+
but the :doc:`Multiresolution </modeling/modifiers/generate/multiresolution>` modifier does (in Sculpt Mode).
|
28 |
+
|
29 |
+
.. note::
|
30 |
+
|
31 |
+
This modifier now uses
|
32 |
+
the `OpenSubdiv library <http://graphics.pixar.com/opensubdiv/docs/intro.html>`__ as a backend.
|
33 |
+
|
34 |
+
|
35 |
+
Options
|
36 |
+
=======
|
37 |
+
|
38 |
+
.. figure:: /images/modeling_modifiers_generate_subdivision-surface_panel.png
|
39 |
+
:align: right
|
40 |
+
|
41 |
+
The Subdivision Surface modifier.
|
42 |
+
|
43 |
+
Type
|
44 |
+
This toggle button allows you to choose the subdivision algorithm:
|
45 |
+
|
46 |
+
Catmull-Clark
|
47 |
+
The default option, subdivides and smooths the surfaces.
|
48 |
+
According to its `Wikipedia page <https://en.wikipedia.org/wiki/Catmull%E2%80%93Clark_subdivision_surface>`__,
|
49 |
+
the "arbitrary-looking formula was chosen by Catmull and Clark based on the aesthetic appearance of
|
50 |
+
the resulting surfaces rather than on a mathematical derivation."
|
51 |
+
Simple
|
52 |
+
Only subdivides the surfaces, without any smoothing
|
53 |
+
(the same as the :ref:`Subdivide <bpy.ops.mesh.subdivide>` operator, in Edit Mode).
|
54 |
+
Can be used, for example, to increase base mesh resolution when using displacement maps.
|
55 |
+
|
56 |
+
Subdivisions
|
57 |
+
Recursively adds more geometry.
|
58 |
+
|
59 |
+
The right combination of these settings will allow you to keep a fast and lightweight approximation of your model
|
60 |
+
when interacting with it in the 3D Viewport, but use a higher quality version when rendering.
|
61 |
+
|
62 |
+
.. warning::
|
63 |
+
|
64 |
+
Higher levels of subdivisions results in more vertices, which means more memory will be occupied
|
65 |
+
(both system RAM, and video memory for display).
|
66 |
+
Blender could potentially crash or hang if you do not have enough available memory.
|
67 |
+
|
68 |
+
Render
|
69 |
+
The number of subdivision levels shown in renders.
|
70 |
+
Viewport
|
71 |
+
The number of subdivision levels shown in the 3D View.
|
72 |
+
Quality
|
73 |
+
How precisely the vertices are positioned
|
74 |
+
(relatively to their theoretical position of an infinitely subdivided mesh),
|
75 |
+
can be lowered to get a better performance.
|
76 |
+
|
77 |
+
Using higher values does not necessarily mean real improvement in quality,
|
78 |
+
ideal results might be reached well before the maximum *Quality* value.
|
79 |
+
|
80 |
+
.. tip::
|
81 |
+
|
82 |
+
Be careful not to set the *Viewport* subdivisions higher than the *Render* subdivisions,
|
83 |
+
this would mean that in the 3D View the quality will be higher than the rendered.
|
84 |
+
|
85 |
+
Options
|
86 |
+
UV Smooth
|
87 |
+
How to handle UVs during subdivision.
|
88 |
+
|
89 |
+
Smooth, keep corners
|
90 |
+
UV islands are smoothed, but their boundary remain sharp.
|
91 |
+
Sharp
|
92 |
+
UV remain unchanged.
|
93 |
+
|
94 |
+
Optimal Display
|
95 |
+
When rendering the wireframe of this object, the wires of the new subdivided edges will be skipped
|
96 |
+
(only displays the edges of the original geometry).
|
97 |
+
|
98 |
+
Use Creases
|
99 |
+
Use the `Weighted Edge Creases`_ values stored in edges to control how smooth they are made.
|
100 |
+
|
101 |
+
|
102 |
+
Keyboard Shortcuts
|
103 |
+
==================
|
104 |
+
|
105 |
+
To quickly add a *Subdivision Surface* modifier to one or more objects, select the object(s) and press :kbd:`Ctrl-1`.
|
106 |
+
That will add a Subdivision Surface modifier with *Viewport* subdivisions set to 1.
|
107 |
+
You can use other numbers too, such as :kbd:`Ctrl-2`, :kbd:`Ctrl-3`, etc,
|
108 |
+
to add a modifier with that number of subdivisions.
|
109 |
+
Adding a *Subdivision Surface* modifier in this fashion will not modify the *Render* subdivisions.
|
110 |
+
|
111 |
+
If an object already has a *Subdivision Surface* modifier,
|
112 |
+
doing this will simply change its subdivision level instead of adding another modifier.
|
113 |
+
|
114 |
+
|
115 |
+
Control
|
116 |
+
=======
|
117 |
+
|
118 |
+
Catmull-Clark subdivision rounds off edges, and often this is not what you want.
|
119 |
+
There are several solutions that allow you to control the subdivision.
|
120 |
+
|
121 |
+
|
122 |
+
.. _modifiers-generate-subsurf-creases:
|
123 |
+
|
124 |
+
Weighted Edge Creases
|
125 |
+
---------------------
|
126 |
+
|
127 |
+
Weighted edge creases for subdivision surfaces allows you to change the way
|
128 |
+
the *Subdivision Surface* modifier subdivides the geometry to give the edges a smooth or sharp appearance.
|
129 |
+
|
130 |
+
.. figure:: /images/modeling_modifiers_generate_subdivision-surface_withcrease.png
|
131 |
+
|
132 |
+
A subdivided cube with creased edges.
|
133 |
+
|
134 |
+
The crease weight of selected edges can be changed in the *Transform* panel, Sidebar of the 3D View.
|
135 |
+
The scale-like dedicated tool :kbd:`Shift-E` can also be used to adjust the crease weight.
|
136 |
+
A higher value makes the edge "stronger" and more resistant to the smoothing effect of subdivision surfaces.
|
137 |
+
|
138 |
+
|
139 |
+
Edge Loops
|
140 |
+
----------
|
141 |
+
|
142 |
+
.. figure:: /images/modeling_modifiers_generate_subdivision-surface_cube-with-edge-loops.png
|
143 |
+
|
144 |
+
Subdivision Level 2 cube, the same with an extra Edge Loop, and the same with six extra Edge Loops.
|
145 |
+
|
146 |
+
The *Subdivision Surface* modifier demonstrates why good, clean topology is so important.
|
147 |
+
As you can see in the figure, the it has a drastic effect on a default cube.
|
148 |
+
Until you add in additional loops (with e.g. :ref:`Loop Cut and Slide <bpy.ops.mesh.loopcut_slide>`),
|
149 |
+
the shape is almost unrecognizable as a cube.
|
150 |
+
|
151 |
+
A mesh with deliberate topology has good placement of edge loops, which allow the placement of more loops
|
152 |
+
(or their removal) to control the sharpness/smoothness of the resultant mesh.
|
153 |
+
|
154 |
+
|
155 |
+
Known Limitations
|
156 |
+
=================
|
157 |
+
|
158 |
+
Non-Contiguous Normals
|
159 |
+
----------------------
|
160 |
+
|
161 |
+
Blender's subdivision system produces nice smooth subdivided meshes, but any subdivided face
|
162 |
+
(that is, any small face created by the algorithm from a single face of the original mesh),
|
163 |
+
shares the overall normal orientation of that original face.
|
164 |
+
|
165 |
+
.. list-table::
|
166 |
+
|
167 |
+
* - .. figure:: /images/modeling_modifiers_generate_subdivision-surface_normal-orientation-1.png
|
168 |
+
:width: 320px
|
169 |
+
|
170 |
+
Comparison of good normals and bad normals.
|
171 |
+
|
172 |
+
- .. figure:: /images/modeling_modifiers_generate_subdivision-surface_normal-orientation-2.png
|
173 |
+
:width: 320px
|
174 |
+
|
175 |
+
Side view of image on the left.
|
176 |
+
|
177 |
+
Abrupt normal changes can produce ugly black gouges even though
|
178 |
+
these flipped normals are not an issue for the shape itself.
|
179 |
+
|
180 |
+
A quick way to fix this is to use Blender's
|
181 |
+
:doc:`Recalculate Normals </modeling/meshes/editing/normals>` operation in Edit Mode.
|
182 |
+
|
183 |
+
If you still have some ugly black gouges you will have to
|
184 |
+
:doc:`manually flip the normals </modeling/meshes/editing/normals>`.
|
triangulate.rst.txt
ADDED
@@ -0,0 +1,55 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.. _bpy.types.TriangulateModifier:
|
2 |
+
|
3 |
+
********************
|
4 |
+
Triangulate Modifier
|
5 |
+
********************
|
6 |
+
|
7 |
+
The *Triangulate* modifier converts all faces in a mesh (quads and polygons) to triangular faces.
|
8 |
+
It fulfills the exact same function as the :ref:`Triangulate <bpy.ops.mesh.quads_convert_to_tris>` tool in Edit Mode.
|
9 |
+
|
10 |
+
.. list-table::
|
11 |
+
|
12 |
+
* - .. figure:: /images/modeling_modifiers_generate_triangulate_before.png
|
13 |
+
:width: 320px
|
14 |
+
|
15 |
+
Mesh before Triangulate modifier.
|
16 |
+
|
17 |
+
- .. figure:: /images/modeling_modifiers_generate_triangulate_after.png
|
18 |
+
:width: 320px
|
19 |
+
|
20 |
+
Mesh after Triangulate modifier.
|
21 |
+
|
22 |
+
|
23 |
+
Options
|
24 |
+
=======
|
25 |
+
|
26 |
+
.. figure:: /images/modeling_modifiers_generate_triangulate_panel.png
|
27 |
+
:align: right
|
28 |
+
|
29 |
+
The Triangulate modifier.
|
30 |
+
|
31 |
+
Quad Method
|
32 |
+
Beauty
|
33 |
+
Split the quads in nice triangles, slower method.
|
34 |
+
Fixed
|
35 |
+
Split the quads on their 1st and 3rd vertices.
|
36 |
+
Fixed Alternate
|
37 |
+
Split the quads on their 2nd and 4th vertices.
|
38 |
+
Shortest Diagonal
|
39 |
+
Split the quads based on the diagonal distance between their vertices.
|
40 |
+
|
41 |
+
N-gon Method
|
42 |
+
Beauty
|
43 |
+
Arrange the new triangles nicely, slower method.
|
44 |
+
Clip
|
45 |
+
Split the polygons using an ear-clipping algorithm
|
46 |
+
(gives similar results to the tessellation used for the viewport rendering).
|
47 |
+
|
48 |
+
Keep Normals
|
49 |
+
When using :ref:`custom normals <modeling_meshes_normals_custom>`,
|
50 |
+
try to preserve the same shading as before triangulation.
|
51 |
+
|
52 |
+
Minimum Vertices
|
53 |
+
Minimum number of vertices a face must have to be triangulated.
|
54 |
+
For example, setting this value to 5, will prevent triangulation of :term:`quads <quad>`
|
55 |
+
and only triangulate :term:`N-gons <N-gon>`.
|
wireframe.rst.txt
ADDED
@@ -0,0 +1,86 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.. _bpy.types.WireframeModifier:
|
2 |
+
|
3 |
+
******************
|
4 |
+
Wireframe Modifier
|
5 |
+
******************
|
6 |
+
|
7 |
+
The *Wireframe* modifier transforms a mesh into a wireframe by iterating over its
|
8 |
+
faces, collecting all edges and turning those edges into four sided polygons.
|
9 |
+
Be aware of the fact that your mesh needs to have faces to be wireframed.
|
10 |
+
You can define the thickness, the material and several other parameters of the generated
|
11 |
+
wireframe dynamically via the given modifier options.
|
12 |
+
|
13 |
+
|
14 |
+
Options
|
15 |
+
=======
|
16 |
+
|
17 |
+
.. figure:: /images/modeling_modifiers_generate_wireframe_panel.png
|
18 |
+
:align: right
|
19 |
+
|
20 |
+
The Wireframe modifier.
|
21 |
+
|
22 |
+
Thickness
|
23 |
+
The depth or size of the wireframes.
|
24 |
+
Offset
|
25 |
+
A value between (-1 to 1) to change whether the wireframes are
|
26 |
+
generated inside or outside of the original mesh.
|
27 |
+
Set to zero, *Offset* will center the wireframes around the original edges.
|
28 |
+
Vertex Group
|
29 |
+
Restrict the modifier to only this vertex group.
|
30 |
+
|
31 |
+
Invert
|
32 |
+
Inverts the vertex group weights.
|
33 |
+
Factor
|
34 |
+
Percentage that the vertex has influence over the final wireframe result.
|
35 |
+
|
36 |
+
Crease Edges
|
37 |
+
This option is intended for usage with
|
38 |
+
the :doc:`Subdivision </modeling/modifiers/generate/subdivision_surface>` modifier.
|
39 |
+
Enable this option to crease edges on their junctions and prevent large curved intersections.
|
40 |
+
|
41 |
+
Crease Weight
|
42 |
+
Define how much crease (0 to 1, nothing to full) the junctions should receive.
|
43 |
+
|
44 |
+
Even Thickness
|
45 |
+
Maintain thickness by adjusting for sharp corners. Sometimes improves quality but also increases computation time.
|
46 |
+
Relative Thickness
|
47 |
+
Determines the edge thickness by the length of the edge. Longer edges will be thicker.
|
48 |
+
Boundary
|
49 |
+
Creates wireframes on mesh island boundaries.
|
50 |
+
Replace Original
|
51 |
+
If this option is enabled, the original mesh is replaced by the generated wireframe.
|
52 |
+
If not, the wireframe is generated on top of it.
|
53 |
+
Material Offset
|
54 |
+
Uses the chosen material index as the material for the wireframe;
|
55 |
+
this is applied as an offset from the first material.
|
56 |
+
|
57 |
+
.. warning::
|
58 |
+
|
59 |
+
Wireframe thickness is an approximation. While *Even Thickness* should yield good results in many cases,
|
60 |
+
skinny faces can cause ugly spikes. In this case you can either reduce the extreme angles in the geometry
|
61 |
+
or disable the *Even Thickness* option.
|
62 |
+
|
63 |
+
|
64 |
+
Examples
|
65 |
+
========
|
66 |
+
|
67 |
+
.. figure:: /images/modeling_modifiers_generate_wireframe_result.jpg
|
68 |
+
:width: 420px
|
69 |
+
|
70 |
+
Wireframes on a displaced plane.
|
71 |
+
|
72 |
+
In this example, the wireframes carry a second (dark) material while the displaced plane uses its original one.
|
73 |
+
|
74 |
+
.. figure:: /images/modeling_modifiers_generate_wireframe_example-weights.png
|
75 |
+
:width: 420px
|
76 |
+
|
77 |
+
Vertex Group weighting.
|
78 |
+
|
79 |
+
The weights of the vertex group gradually change from 0 to 1.
|
80 |
+
|
81 |
+
.. figure:: /images/modeling_modifiers_generate_wireframe_example-crease.png
|
82 |
+
:width: 420px
|
83 |
+
|
84 |
+
Wireframe and Subdivision Surface modifier.
|
85 |
+
|
86 |
+
Cube with enabled *Crease Edges* option. The *Crease Weight* is set to 0, 0.5 and 1.
|