Như @ben đã đề cập, bạn có thể sử dụng Mayavi và sau đó tương tác thay đổi ánh sáng. Ý tưởng hay là nhấp vào nút ghi bản ghi, sau đó bạn có thể sử dụng các dòng mã đó trong tập lệnh của mình (Đó là cách tôi đã làm cho phần Mayavi ở đây).
Một tùy chọn khác là sử dụng Matplotlib. Dựa trên shading example, tôi đã quản lý để tạo ra một bề mặt có ánh sáng.
Xem mã bên dưới.
import numpy as np
from mayavi import mlab
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib.colors import LightSource
## Test data: Matlab `peaks()`
x, y = np.mgrid[-3:3:150j,-3:3:150j]
z = 3*(1 - x)**2 * np.exp(-x**2 - (y + 1)**2) \
- 10*(x/5 - x**3 - y**5)*np.exp(-x**2 - y**2) \
- 1./3*np.exp(-(x + 1)**2 - y**2)
## Mayavi
surf = mlab.surf(x, y, z, colormap='RdYlBu', warp_scale='auto')
# Change the visualization parameters.
surf.actor.property.interpolation = 'phong'
surf.actor.property.specular = 0.1
surf.actor.property.specular_power = 5
## Matplotlib
fig = plt.figure()
ax = fig.gca(projection='3d')
# Create light source object.
ls = LightSource(azdeg=0, altdeg=65)
# Shade data, creating an rgb array.
rgb = ls.shade(z, plt.cm.RdYlBu)
surf = ax.plot_surface(x, y, z, rstride=1, cstride=1, linewidth=0,
antialiased=False, facecolors=rgb)
plt.show()
mlab.show()
Điều này cho phép như kết quả:
- Mayavi:
- Matplotlib:
Hai điều mùa xuân trong tâm trí. Trong MATLAB, tôi nhận thấy rằng nếu bạn chuyển đổi kết xuất đồ họa (từ trình kết xuất phần mềm MATLAB sang trình kết xuất OpenGL), nó chuyển sang màu sáng bóng để trông phẳng hơn nhiều. Vì vậy, có thể là matplotlib đang sử dụng trình kết xuất đồ họa OpenGL. Thứ hai, là có một cách để thay đổi màu sắc và độ sáng của nguồn ánh sáng trong matplotlib. Điều này có thể cho phép bạn thay đổi "shininess" của cốt truyện của bạn. – shaw2thefloor
Cảm ơn. Đề nghị tốt - Tôi tự hỏi làm thế nào tôi có thể thay đổi Mayavi/Matplotlib renderer sau đó để giúp đạt được điều này xin vui lòng? – NewPythonUsers1
Có thể điều này sẽ giúp - thay đổi các chương trình phụ trợ trong matplotlib: http://stackoverflow.com/questions/3285193/how-to-switch-backends-in-matplotlib-python Chiếu sáng phong cách sẽ thực sự tốt đẹp trong python, nhưng tôi không thể tìm thấy bất cứ điều gì trên đó. Chỉ đề cập đến trong ngữ cảnh sử dụng API python Blender: http://blenderartists.org/forum/showthread.php?190352-Simple-Phong-shader-via-PyNodes – mmagnuski