Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Witt <>2016-10-01 02:54:44 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2016-10-01 02:56:16 +0300
commit95fa303efd0b6e2963af423e601bb2869ac82520 (patch)
tree2a7b5ad65c5b4898e0e395965699ca9c2b400460 /release
parent20c6d5e3cb71acb9e783ddcbce89a42914db9ec6 (diff)
Add default UV coordinates for torus primitive.
Fixes T47489. Reviewed By: brecht
Diffstat (limited to 'release')
-rw-r--r--release/scripts/startup/bl_operators/add_mesh_torus.py40
1 files changed, 40 insertions, 0 deletions
diff --git a/release/scripts/startup/bl_operators/add_mesh_torus.py b/release/scripts/startup/bl_operators/add_mesh_torus.py
index 82014c87be9..303a8b01192 100644
--- a/release/scripts/startup/bl_operators/add_mesh_torus.py
+++ b/release/scripts/startup/bl_operators/add_mesh_torus.py
@@ -23,6 +23,7 @@ from bpy.types import Operator
from bpy.props import (
FloatProperty,
IntProperty,
+ BoolProperty,
)
from bpy.app.translations import pgettext_data as data_
@@ -81,6 +82,33 @@ def add_torus(major_rad, minor_rad, major_seg, minor_seg):
return verts, faces
+def add_uvs(mesh, minor_seg, major_seg):
+ mesh.uv_textures.new()
+ uv_layer = mesh.uv_layers.active
+ u_step = 1.0/major_seg
+ v_step = 1.0/minor_seg
+ vertex_index = 0
+
+ u = 0.5
+ for major_index in range(major_seg):
+ v = 0.5
+ for minor_index in range(minor_seg):
+ loops = mesh.polygons[vertex_index].loop_indices
+ if minor_index == minor_seg-1 and major_index == 0:
+ uv_layer.data[loops[1]].uv = (u, v)
+ uv_layer.data[loops[2]].uv = (u + u_step, v)
+ uv_layer.data[loops[0]].uv = (u, v + v_step)
+ uv_layer.data[loops[3]].uv = (u + u_step, v + v_step)
+ else:
+ uv_layer.data[loops[0]].uv = (u, v)
+ uv_layer.data[loops[1]].uv = (u + u_step, v)
+ uv_layer.data[loops[3]].uv = (u, v + v_step)
+ uv_layer.data[loops[2]].uv = (u + u_step, v + v_step)
+ v = (v + v_step) % 1.0
+ vertex_index += 1
+ u = (u + u_step) % 1.0
+
+
class AddTorus(Operator, object_utils.AddObjectHelper):
"""Add a torus mesh"""
bl_idname = "mesh.primitive_torus_add"
@@ -145,10 +173,18 @@ class AddTorus(Operator, object_utils.AddObjectHelper):
subtype='DISTANCE',
unit='LENGTH',
)
+ generate_uvs = BoolProperty(
+ name="Generate UVs",
+ description="Generate a default UV map",
+ default=False,
+ )
def draw(self, context):
layout = self.layout
+
col = layout.column(align=True)
+ col.prop(self, 'generate_uvs')
+ col.separator()
col.prop(self, 'view_align')
col = layout.column(align=True)
@@ -217,6 +253,10 @@ class AddTorus(Operator, object_utils.AddObjectHelper):
mesh.polygons.foreach_set("loop_start", range(0, nbr_loops, 4))
mesh.polygons.foreach_set("loop_total", (4,) * nbr_polys)
mesh.loops.foreach_set("vertex_index", faces)
+
+ if self.generate_uvs:
+ add_uvs(mesh, self.minor_segments, self.major_segments)
+
mesh.update()
object_utils.object_data_add(context, mesh, operator=self)