igl或者libigl库的使用
libigl是一个很方便的几何网格处理库
可以计算出Gaussian Curvature、Principle Curvature等基础信息。
python 基础代码如下:
from scipy.sparse.linalg import spsolve
import igl
import os
import numpy as np
import igl
import scipy as sp
from meshplot import plot, subplot, interact
import meshplot
meshplot.jupyter()
meshplot.offline()
v, f = igl.read_triangle_mesh("data/******.obj")
l = igl.cotmatrix(v, f)
n = igl.per_vertex_normals(v, f)*0.5+0.5
c = np.linalg.norm(n, axis=1)
vs = [v]
cs = [c]
for i in range(10):
m = igl.massmatrix(v, f, igl.MASSMATRIX_TYPE_BARYCENTRIC)
s = (m - 0.001 * l)
b = m.dot(v)
v = spsolve(s, m.dot(v))
n = igl.per_vertex_normals(v, f)*0.5+0.5
c = np.linalg.norm(n, axis=1)
vs.append(v)
cs.append(c)
# plot(v, f)
# plot(vs[0], f, c, shading={"wireframe": False}, s=[1, 4, 0])
p = subplot(vs[0], f, c, shading={"wireframe": False}, s=[1, 4, 0])
subplot(vs[3], f, c, shading={"wireframe": False}, s=[1, 4, 1], data=p)
subplot(vs[6], f, c, shading={"wireframe": False}, s=[1, 4, 2], data=p)
subplot(vs[9], f, c, shading={"wireframe": False}, s=[1, 4, 3], data=p)
p.save("subplot.html")
# @interact(level=(0, 9))
# def mcf(level=0):
# p.update_object(vertices=vs[level], colors=cs[level])
k = igl.gaussian_curvature(v, f)
p = plot(v, f, k, return_plot=True)
p.save("gaussian_curvature.html")
m = igl.massmatrix(v, f, igl.MASSMATRIX_TYPE_VORONOI)
minv = sp.sparse.diags(1 / m.diagonal())
kn = minv.dot(k)
p = plot(v, f, kn, return_plot=True)
p.save("igl.massmatrix2222.html")
l = igl.cotmatrix(v, f)
m = igl.massmatrix(v, f, igl.MASSMATRIX_TYPE_VORONOI)
minv = sp.sparse.diags(1 / m.diagonal())
hn = -minv.dot(l.dot(v))
h = np.linalg.norm(hn, axis=1)
p = plot(v, f, h, return_plot=True)
p.save("igl.massmatrix.html")
v1, v2, k1, k2 = igl.principal_curvature(v, f)
h2 = 0.5 * (k1 + k2)
p = plot(v, f, h2, shading={"wireframe": False}, return_plot=True)
p.save("principal_curvature.html")
avg = igl.avg_edge_length(v, f) / 2.0
p.add_lines(v + v1 * avg, v - v1 * avg, shading={"line_color": "red"})
p.add_lines(v + v2 * avg, v - v2 * avg, shading={"line_color": "green"})
p.save("principal_curvature_line.html")
## Select a vertex from which the distances should be calculated
vs = np.array([0])
##All vertices are the targets
vt = np.arange(v.shape[0])
d = igl.exact_geodesic(v, f, vs, vt)#, fs, ft)
strip_size = 0.02
##The function should be 1 on each integer coordinate
c = np.abs(np.sin((d / strip_size * np.pi)))
p = plot(v, f, c, shading={"wireframe": False}, return_plot=True)
p.save("exact_geodesic.html")
import pdb
pdb.set_trace()
igl或者libigl库的使用相关推荐
- 学习安装libigl库
折腾了差不多一天,终于可以编译成功libigl库了. 本人使用vs2015编译GitHub下的libigl开源库,其中遇到了不少的问题,现在将编译的完整过程记录下来,以免以后忘记了,有表述不清或者写不 ...
- 利用PCL库从点云数据生成深度图像及关键点提取
利用PCL库从点云数据生成生成深度图像及关键点提取 利用PCL库从点云数据生成深度图像及关键点提取 本想利用标准点云数据库分割成若干块,利用标准点云数据生成深度图像作为数据库用来验证算法,目前效果不是 ...
- 使用CMake编译Libigl错误问题解决方法
所编译环境:win10.VS2015 X64 Libigl,所编译时遇到的问题: error: could not find git for clone of eigen-download 官网下载安 ...
- 基于RBF函数的点云孔洞修补
文章目录 一.简介 二.实现代码 三.配置工作 四.执行效果 四.参考资料 一.简介 之前无意中看到这样一种点云孔洞修补方法,感觉很有意思,就下载了作者的源码看看效果,具体流程如下所述: 1.首先,我 ...
- 数字几何处理作业1:编程实现三角网格上高斯曲率和平均曲率的计算编程部分
三.编程 1.代码 用的是中国科大傅孝明老师的框架:框架下载及配置运行 (1)在哪儿添加代码 梳理框架的结构后,在MeshViewerWidget.中添加求解曲率的函数,并在MainViewerWid ...
- Windows API参考大全
第一章 Win32 API概论 1.1为什么使用 Wu32 API 在Windows程序设计领域处于发展初期时,Windows程序员可使用的编程工具唯有API 函数.这些函数在程序员手中犹如" ...
- libigl第五章-参数化
在计算机图形学中,我们将表面参数化表示为从表面到 R2R^2R2 .它通常由网格的每个顶点的一组新的 2D 坐标编码(并且可能还通过与原始曲面的面一一对应的一组新面)请注意,此定义与经典微分几何定义相 ...
- 【CG】汇总开源的三维图形/计算几何/CAD算法库
目录 Computer Graphics Group at RWTH Aachen OpenFlipper OpenMesh OpenVolumeMesh [IceSL]ADVANCED MODELI ...
- 3D网格布尔运算开源库
3D网格布尔运算开源库 3D网格布尔运算开源库 网格的布尔运算广泛应用于建筑.医学导航软件.游戏和电影动画等应用场景中,3D模型的编辑软件,3D Max.Maya以及Blender就广泛应用网格的布尔 ...
最新文章
- 第13章:项目合同管理--章节真题
- 两台linux之间传递文件
- 将一个数组中的值按逆序重新排放。_六十五、下一个更大的数系列,单调栈解决方法...
- 基于全注解的SpringMVC+Spring4.2+hibernate4.3框架搭建
- Modelsim-altera 仿真 顶层原理图的解决办法
- BZOJ 3238: [Ahoi2013]差异 [后缀数组 单调栈]
- 使用官网支持工具制作富士施乐打印机一键安装的程序
- c语言编译器 代码优化,C语言 之编译器优化
- 基于51单片机与wifi模块(esp8266-12f)实现对LED灯的控制
- google guava Joiner 示列
- VB实现移动鼠标产生粒子效果
- 笨方法学python3怎么样_笨办法学Python3
- 如何用python画笑脸QQ表情——turtle库实践
- 解决npm不是内部或外部命令
- 4G物联网网关可接入ONVIF/RTSP 摄像头实现rtmp推流
- 仓储委外加工/周转加工
- 小试牛刀:用python写欢乐斗牛
- YOLOv7改进之二十二:涨点神器——引入递归门控卷积(gnConv)
- 福建程序员行业技术微信交流群,福建的小伙伴看过来了!
- 前端vue基于onlyoffice实现在线预览