Главная страница

Отчет по учебной


Скачать 415.93 Kb.
НазваниеОтчет по учебной
Дата06.12.2022
Размер415.93 Kb.
Формат файлаdocx
Имя файлаKursovaya_rabota_v_1_8.docx
ТипОтчет
#830166
страница11 из 12
1   ...   4   5   6   7   8   9   10   11   12

19

  1. for i in range ( len ( points )):

  2. edge = []

22

  1. if i == len ( points ) - 1:

  2. edge . append ( i)

  3. edge . append (0)

  4. else :

  5. edge . append ( i)

  6. edge . append ( i + 1)

29

30 edges . append ( tuple ( edge ))

31

32 return {’ verts : points , edges : edges }
Листинг А.3 Создание сетки и объекта.

  1. def create_mesh_obj ( name , data ):

  2. m = bpy . data . meshes . new ( name + _mesh ’)

  3. 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

  1. rot_matrix = Matrix . Rotation ( radians (90) , 3 , ’Z ’)

  2. turn_around_matrix = Matrix . Rotation ( radians (180) , 3 , ’Z ’)

5

  1. o. select = True

  2. bpy . context . scene . objects . active = o

8

  1. if o. mode != EDIT ’: bpy . ops . object . mode_set ( mode = EDIT ’)

  2. bpy . ops . mesh . select_mode ( type = VERT ’)

11

12

for

i in range ( iterations ):




13




d = o. data

14




bm = bmesh . from_edit_mesh ( d)

15




bv = bm. verts

16




edges = { e. index : [ v. index for v in e. verts ]

for

e

in

bm


17

.

edges }




18

for

edge_index , edge in enumerate ( edges ):




19




bpy . ops . mesh . select_mode ( type = VERT ’)




20










21




bpy . ops . mesh . select_all ( action = DESELECT ’)




22










23




bm. verts . ensure_lookup_table ()




24










25




for v in edges [ edge ]:




26




bv[ v]. select = True




27










28




bm. select_flush ( True )




29










30




result = bpy . ops . mesh . subdivide ( number_cuts =

2)

31










32




bm. select_flush ( True )




33










34




selected_edges = {




35




e. index : set ([ v. index for v in e. verts ])

\

36




for e in bm. edges if e. select




37




}




38










  1. mid = 42

  2. for i in selected_edges . keys ():

  3. other_edges = set ( selected_edges . keys ()) - set ([ i

])

42

  1. num_of_joint_verts = 0

  2. for oe in other_edges :

  3. if selected_edges [ i] & selected_edges [ oe ]:

  4. num_of_joint_verts += 1

47

  1. if num_of_joint_verts == 2:

  2. mid = i

  3. break

51

52 bm. verts . ensure_lookup_table ()

53

  1. bpy . ops . mesh . select_all ( action = DESELECT ’)

  2. for v in selected_edges [ mid ]:

  3. bv[ v]. select = True

57

58 bm. select_flush ( True )

59

60 bpy . ops . mesh . subdivide ( number_cuts = 1)

61

  1. selected_edges_verts = [

  2. set ([ v. index for v in e. verts ]) for e in bm. edges if e. select

64 ]

65

  1. joint_vert = list (

  2. selected_edges_verts [0] & selected_edges_verts
    1   ...   4   5   6   7   8   9   10   11   12


написать администратору сайта