问题描述
我目前正在使用 this CSG 库来减去两个实体。我选择这个特定的库是为了使用我的项目的 .NET Framework 4.5 依赖项。 我的目标是能够对两个凹面成功使用布尔运算。但是,当我减去两个实体时,该函数会留下相减形状的一些顶点。
以下是减影图像的外观示例,以 3d 呈现: Correct Solid Subtraction
相反,该函数产生如下结果: Failed Solid Subtraction
您可以看到一些顶点已留在减去的实体上方,这会导致渲染和进一步操作出现问题。我在存储库 here 上打开了一个 GitHub 问题,我还使用 NUnit.Framework
创建了一个失败的单元测试,它从 .json
文件中读取点(内容如下):
[Test]
public void coplanarConcave ()
{
using StreamReader r = new StreamReader ("TestCase.json");
string json = r.ReadToEnd ();
List<List<List<double>>> items = JsonConvert.DeserializeObject<List<List<List<double>>>> (json);
var vectorList = items.Select (doublesList =>
doublesList.Select (doubles => new Vector3D (doubles[0],doubles[1],doubles[2])).ToList ()).ToList ();
var texture = new Vector2D (0,0);
var vertices = vectorList.Select (vertex => vertex.Select (vector => new Vertex (vector,texture)).ToList ())
.ToList ();
var polyArray = vertices.Select (vertex => new polygon (vertex)).ToList ();
var solid = Solid.Frompolygons (polyArray);
var testSolid = solid.Translate (0,10);
var result = solid.Substract (testSolid);
var badpolygons =
result.polygons.Where (polygon => polygon.Vertices.Any (vertex => vertex.Pos.Z >= 217.125));
Assert.IsEmpty (badpolygons);
}
[[[744.585,734.575,97.125],[1062.208,276.028,[889.654,504.099,[744.585,97.125]],[[744.585,1297.125],[[1062.208,[[889.654,1297.125]]]
这里有什么问题?我可以使用更好的实体几何库吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)