Отчет по учебной
Скачать 415.93 Kb.
|
19 for i in range ( len ( points )): edge = [] 22 if i == len ( points ) - 1: edge . append ( i) edge . append (0) else : edge . append ( i) edge . append ( i + 1) 29 30 edges . append ( tuple ( edge )) 31 32 return {’ verts ’ : points , ’ edges ’ : edges } Листинг А.3 – Создание сетки и объекта. def create_mesh_obj ( name , data ): m = bpy . data . meshes . new ( name + ’ _mesh ’) o = bpy . data . objects . new ( name , m) 4 5 o. location = (0 , 0 , 0) 6 7 bpy . context . scene . objects . link ( o) 8 9 m. from_pydata ( data [’ verts ’], data [’ edges ’], []) 10 11 m. update ( calc_edges = True ) 12 13 return o Листинг А.4 – Создание матрицы вращения. 1 def create_snowflake (o, iterations = 2): 2 rot_matrix = Matrix . Rotation ( radians (90) , 3 , ’Z ’) turn_around_matrix = Matrix . Rotation ( radians (180) , 3 , ’Z ’) 5 o. select = True bpy . context . scene . objects . active = o 8 if o. mode != ’ EDIT ’: bpy . ops . object . mode_set ( mode = ’ EDIT ’) bpy . ops . mesh . select_mode ( type = ’ VERT ’) 11
mid = 42 for i in selected_edges . keys (): other_edges = set ( selected_edges . keys ()) - set ([ i ]) 42 num_of_joint_verts = 0 for oe in other_edges : if selected_edges [ i] & selected_edges [ oe ]: num_of_joint_verts += 1 47 if num_of_joint_verts == 2: mid = i break 51 52 bm. verts . ensure_lookup_table () 53 bpy . ops . mesh . select_all ( action = ’ DESELECT ’) for v in selected_edges [ mid ]: bv[ v]. select = True 57 58 bm. select_flush ( True ) 59 60 bpy . ops . mesh . subdivide ( number_cuts = 1) 61 selected_edges_verts = [ set ([ v. index for v in e. verts ]) for e in bm. edges if e. select 64 ] 65 joint_vert = list ( selected_edges_verts [0] & selected_edges_verts |