请问meshtaichi 如何只使用边界上的face

import taichi as ti
import meshtaichi_patcher as Patcher
import numpy as np
ti.init(ti.cpu)
model_path='../model/armadillo/armadillo.node'
model = Patcher.load_mesh_rawdata(model_path)
print(len(model['face'])) # 22632
mesh = Patcher.load_mesh(model_path, relations=["FV"])
print(len(mesh.faces)) # 95236

armadillo.face中只保存了边界上的face,一共22K个,但是load进去的时候有95K。发现这时候是保存了全部的cell对应的face。如果想要在使用cell计算的同时只对边界上的face进行计算,请问这时候应该怎么做?

你好,

meshtaichi是会load全部的cells对应的faces,如果你只想要访问表面边界上的faces,可以基于mesh的拓扑信息进行判断,即边界face会且只会相邻一个cell,所以你可以在mesh-for里作如下判断。从:

for f in model.faces:
   # do ...

改为

for f in model.faces:
  if f.cells.size == 1: # True if it's bounary face
    # do ...

并在加载mesh的时候引入Face-Cell关系:Patcher.load_mesh(model_path, relations=["FC", ...])

希望可以帮到你!

4 个赞

十分感谢!