Blender
|
Python Script:
Modifying
a Square Mesh ,
Part
2: Iteration
|
|
Version
Française
The previous tutorial allowed us to create
a polygon. However, in 3D modeling it is extremely rare that one
builds an object with only one polygon. Generally, it consists of a complicated
unit, a mesh, or a lattice. It is obviously not possible to consider creation
of each polygon "by hand". Especially, when it is known that a Blender
mesh can contain more than 65000 polygons. It is for this reason,
that the power of the programming language will become apparent, in the
possibility of automating this operation. To accomplish this, we need to
know how to build an iterative loop in Python.
To create an iterative
loop in Python
An iterative loop could correspond to the
following pseudo code:
As long as this variable is lower
than the end value
Carry
out these operations
According to : each time
through, this variable is increased by an amount and then returns to the
line As long as... |
With Pascal or the Modula languages, this
would produce:
For this_variable <
end_value do
Begin
carry out_command_1;
carry out_command_2;
End; |
In the C language:
for (this_variable = start_value
;
this_variable
<
end_value ;
this_variable
++
)
{
run
_ command_1 ;
run _ command_2 ;
} |
In BASIC:
FOR this_variable = start_value
TO
this_variable = end_value
run
_ command_1
run
_ command_2
NEXT this_variable |
In these languages, the loops proceed between
boundary
markers which are clearly defined: limits concerning the number of
possible iterations, which as well, limits the number of times that the
commands comprising the body of the loop are performed. These limits be
brackets or keywords like " begin/end " or " for/next" , but the
result is one and the same.
Alas, Python is optimized, one can even
say that it was born to work with lists. An iterative loop
will take a list as limits. This
means that the loop will begin on the first element from the list, then
jump to the second element and so on. This operation will be carried out
at least once for each element of the list, until the end of the list is
reached.
In Python:
for this_variable in
this_list
:
run
_ command_1
run
_ command_2 |
Moreover, this_variable really
is
the actual element of this_list. If this_variable
is processed in the body of the loop, this amounts to working directly
on the element in question. ie. Besides the element being involved in the
loop's control mechanism, it may also be involved in the work being performed
in the loop's body.
The limits of the loop's body are
the sign ": " and indentations
(indents
compared to the margin of the lines) which constitute the body of the
loop. The indentations must always be identical and of a comparable nature.
One cannot mix : spaces and tabulations. An additional displacement towards
the interior of the page indicates to Python that it must take into account
a new subroutine. If this subroutine is not declared clearly with the sign
":"
in the previous line, it is regarded as a syntax error.
It is not the intention of this tutorial
to show the undeniable advantages of proceeding in this way. However, it
is clear that it may come as some what of a surprise, especially if you
already have some previous programming experience with other languages.
Although, the above is a "step in the right
direction" there are a few more obstacles to overcome, because to
work EASILY with our mesh, we need to reach values which correspond
to lines and to the positions in these lines, in fact cells in a bidimensional
table ( 2D spaces, x and y coordinates , nothing too difficult to understand).
|