File: logo.py.old

package info (click to toggle)
python-pyvista 0.44.1-11
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 159,804 kB
  • sloc: python: 72,164; sh: 118; makefile: 68
file content (111 lines) | stat: -rw-r--r-- 3,334 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
"""
Create Our Logo
~~~~~~~~~~~~~~~

Think our logo is awesome? Create it yourself!
"""
# sphinx_gallery_thumbnail_number = 2
import pyvista
import numpy as np

###############################################################################

# mesh for each letter
space = 0.3
mesh_letters = pyvista.MultiBlock()
width = 0
density = 0.03
for letter in 'pyvista':
    mesh_letter = pyvista.Text3D(letter, depth=0.3)
    this_letter_width = mesh_letter.points[:, 0].max()
    mesh_letter.translate([width + space, 0, 0.0], inplace=True)
    width += this_letter_width
    mesh_letters[letter] = mesh_letter

grid = pyvista.voxelize(pyvista.Text3D('pyvista'), 0.05)
grid.plot(color='w', show_edges=True)

###############################################################################

v_grid = pyvista.voxelize(mesh_letters['v'], density=0.03)
t_grid = pyvista.voxelize(mesh_letters['t'], density=0.07)
k_grid = pyvista.voxelize(mesh_letters['k'], density=0.08)
i_grid = pyvista.voxelize(mesh_letters['i'], 0.05)

v_mesh = v_grid.triangulate().extract_geometry().decimate_pro(0.9)

###############################################################################

# plot letters
plotter = pyvista.Plotter(window_size=np.array([1024, 512]) * 2)

# Add the V
plotter.add_mesh(v_mesh, color='w', show_edges=True)

# Add the T
plotter.add_mesh(t_grid.extract_surface(),
                 style='points', color='r', render_points_as_spheres=True,
                 point_size=12)
plotter.add_mesh(t_grid, style='wireframe', color='k', line_width=3, )


# Add the K
# isolate the cells of k_grid
# cells = []
x_min, x_max, y_min, y_max, z_min, z_max = k_grid.bounds
x_width = x_max - x_min
x_move = 2.1
spread = 1.4
x_mean, y_mean, z_mean = k_grid.points.mean(0)
keep = []
scalars = []
# as x in increases, k cells will shift outward
for i in range(k_grid.n_cells):
    cell = k_grid.extract_cells([i])
    orig_cell = cell.copy()
    x_dist = np.mean(cell.bounds[:2])
    fac = x_dist - x_move
    x_shift = 0
    y_dist = np.mean(cell.bounds[2:4])
    z_dist = np.mean(cell.bounds[4:]) - z_mean
    if fac > 0:
        fac = fac**1.5
        cell.translate([x_shift, y_dist*fac*spread, z_dist*fac*spread], inplace=True)
    # cells.append(cell)

    opacity = (x_max - x_dist)/x_width
    if opacity > 0.5:
        keep.append(i)
        scalars.append(x_dist + 0.2)
        # plotter.add_mesh(orig_cell, style='surface', color='w', cmap='Greys_r',
        #                  scalars=[x_dist + 0.2], rng=[x_min, x_max],
        #                  show_edges=True)
    else:
        # opacity = opacity
        plotter.add_mesh(cell, color='w', show_edges=True, opacity=opacity)

keep_k = k_grid.extract_cells(keep)
plotter.add_mesh(keep_k, scalars=scalars, cmap='Greys_r', rng=[x_min, x_max],
                 show_edges=True)


# Add the I
plotter.add_mesh(i_grid, color='w', style='wireframe', line_width=3,
                 scalars=i_grid.points[:, 1], cmap='bwr')

# Show
plotter.set_background('white')

plotter.camera_position = [(0.124, 1.100, 3.338),
                           (1.716, 0.379, 0.143),
                           (0.091, 0.980, -0.176)]



save_it = False
if save_it:
    plotter.show(auto_close=False)
    plotter.screenshot('pyvista_logo.png', transparent_background=True)
    plotter.close()
else:
    plotter.show()