pythreejs无法在jupyter笔记本中渲染大网格(但成功地渲染了一个小网格)

2024-03-29 08:25:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在尝试使用pythorejs在我的jupyter笔记本中渲染3D对象。对于第一个测试,我用四面体做了以下简单的示例:

# Plot a mesh with pythreejs
import pythreejs as p3js
from IPython.display import display

vertices = [[0.3,0,0],[0,0.5,0.4],[-0.2,0.3,-0.1],[0.9,0,-0.3]]
faces = [[0,1,2],[1,2,3],[2,0,3],[0,1,3]]
colors = ['#ff0000','#00ff00','#0000ff','#ffffff']

faces = [f + [None, [colors[i] for i in f]] for f in faces]

geo = p3js.Geometry(vertices=vertices, faces=faces, colors=colors)
geo.exec_three_obj_method('computeFaceNormals')
mesh = p3js.Mesh(
   geometry=geo,
   material=p3js.MeshBasicMaterial(vertexColors='VertexColors',
                                   side='DoubleSide'),
   position=list(-np.mean(vertices, axis=0)))
cam = p3js.PerspectiveCamera(position=[4,0,0], up=[0,0,1], fov=10)
scene = p3js.Scene(
    children=[mesh, cam, p3js.AmbientLight(color=u'0x777777')],
    background='black')
renderer = p3js.Renderer(camera=cam, scene=scene,
                         controls=[p3js.OrbitControls(controlling=cam)])
display(renderer)

当我在一个jupyter笔记本(python3.6.6,pythorejs版本1.1.0)中评估上述内容时,我或多或少得到了我所期望的:一个黑色背景,一个有趣的四面体,其顶点有不同的颜色。太好了!所以我尝试了一个更复杂的网格。我已将此网格的数据以gzip-hdf5格式上载到文件拖放器,here;您可以下载它,然后用以下代码读取它:

^{pr2}$

我已经用很多其他软件验证了网格数据,所以我不认为网格本身就是问题所在(尽管网格可能有一些小缺陷——例如,两个顶点实际上位于同一位置)。当我使用h5py加载代码来替换先前代码块的vertices = ...faces = ...和{}行时,我得到的是一个空白的黑框。还请注意,mesh,当其自身求值时,也会显示一个空白框(尽管在四面体的情况下,它显示了网格的渲染)。我在文档中没有看到任何东西表明大网格不起作用。还有什么不对劲吗?在

提前谢谢。在

编辑:原来的文件太大了,所以我上传了一个新文件(相同的文件,现在只是gzip压缩)。在


Tags: 文件代码网格displayjupyterscenegeocolors