Visualize Surface by Delaunay Triangulator

277 篇文章 7 订阅
订阅专栏
255 篇文章 7 订阅
订阅专栏
152 篇文章 1 订阅
订阅专栏

转自:http://www.cppblog.com/eryar/archive/2014/07/27/207835.html

Abstract. Delaunay Triangulation is the core algorithm for mesh generation. By Delaunay Triangulator you can make a general method to visualize geometry surfaces, so does OpenCascade. The paper focus on the geometry surfaces visualization, include the surfaces with holes.

Key words. OpenCascade, Delaunay Triangulator, OpenSceneGraph, Mesh, NURBS

1. Introduction

模型数据最终要在显示器上输出,需要有统一的处理方法。对于曲线而言,只需要在曲线上取一定的点连接成线,就可以用来逼近显示曲线了。对于曲面而言,可以用三角网格来逼近曲面。对于参数表示的曲线,求曲线的点很容易,只要给出参数就可以得到参数对应的曲线上的点。对于参数表示的曲面,情况要复杂些了,如何得到三角网格呢?

经过boolean operation后,会有些孔产生,这些面上的孔如何用统一的方法可视化呢?对于曲面的可视化也一定存在统一、简单的方法。程序开发最终追求的都是简单、统一,这样代码才显得优雅。如果代码看上去很复杂,到处是重复代码,暴露出来的接口也很随意,完全违背单一职责原则和Demeter法则,开发出来的软件用起来必定也很麻烦,这对程序员和软件用户都是噩梦。这样的代码一定有重构和改进的空间,最终达到程序开发人员和软件的用户都舒服的状态。书山有路勤为径,学海无涯苦作舟,拒绝保守、懒惰,不思进取。

言归正传,本文主要使用OpenSceneGraph中的Delaunay Triangulator来对OpenCascade中的任意参数曲面可视化,即曲面可视化的统一算法。在理解曲面可视化的基础上,可对NURBS曲面的可视化,有助于直观来学习NURBS理论。

谈到NURBS理论,又是追求统一、简单的产物。由于在数学和算法上的良好性质,以及在工业领域的成功应用,使得NURBS得到了极大的普及。NURBS在CAD/CAM/CAE领域中所起的作用类似于英语在科学和商业中的作用。因此,想从事CAD,必须理解NURBS。NURBS的重要作用就是统一了曲线曲面的数学模型,使软件对曲线曲面的处理方式相同,且利用NURBS进行设计非常直观,几乎每个工具和算法都有一个易于理解的几何解释。

让CAD软件用户使用简单,得到便利,就要有相应的技术(NURBS)支持。至于NURBS是Non-Uniform Rational B-Spline还是Nobody Understands Rational B-Spline,普通用户是不关心的。网格化的算法也是类似,让三维模型可视化变得简单、统一,至于是使用Delaunay Triangulation还是其他算法,对于图形显示接口如OpenGL也不关心,他只管画三角形就好。然而高效的网格化算法也是一个技术难点。如果不仅要知其然而且还要知其所以然,都要付出努力。

2. Visualize Geometry Surface

网格生成技术是研究如何将给定的空间离散为简单的几何单元的方法。三角网格和四面体网格是迄今为止最为常用的非结构形式,它可以很好地逼近边界,描述结构复杂的空间。Delaunay三角、四面体剖分由于其具有良好的数学基础,对网格的局部控制能力强,网格单元自动向正三角、四面体逼近等优良特性,近年来受到了众多领域的研究人员的关注,在科学计算可视化、图形学三维表示、石油地质勘探、地理信息系统、逆向工程、医学图像处理等领域有着明显的应用前景。

在数字地形建模中,不规则三角网(TIN)通过从不规则离散分布的数据点生成的连续三角面来逼近地形表面。就表达地形信息角度而言,TIN模型的优点是它能以不同层次的分辨率来描述地形表面。TIN模型在一定特定分辨率下能用更少的空间和时间更精确地表示复杂的表面。特别是当地形包含有大量特征,如断裂线、构造线时,TIN模型能更好地顾及这些特征,从而更精确地表达地表形态。关于Delaunay算法,可以参考相关书籍或网络资源自己实现,或是使用开源库,如Triangle, CGAL等。本文主要是使用OpenSceneGraph中现成算法来将参数曲面可视化。

OpenSceneGraph中Delaunay的使用非常简单,只需要将点集传给DelaunayTriangulator即可,下面代码示例将OpenCascade中任意参数曲面的参数空间离散成三角网格,再映射到三维空间,将曲面可视化。


osg::Node* BuildSurface(const Handle_Geom_Surface &theSurface)
{
    osg::ref_ptr<osg::Geode> aGeode = new osg::Geode();
    osg::ref_ptr<osg::Geometry> aGeometry = new osg::Geometry();

    osg::ref_ptr<osg::Vec3Array> aUVPoints = new osg::Vec3Array();
    osg::ref_ptr<osg::Vec3Array> aPoints = new osg::Vec3Array();

    osg::ref_ptr<osgUtil::DelaunayTriangulator> dt = new osgUtil::DelaunayTriangulator();

    // build triangulation for the parametric space.
    Standard_Real u1 = 0.0;
    Standard_Real u2 = 0.0;
    Standard_Real v1 = 0.0;
    Standard_Real v2 = 0.0;

    theSurface->Bounds(u1, u2, v1, v2);

    Precision::IsNegativeInfinite(u1) ? u1 = -1.0: u1;
    Precision::IsPositiveInfinite(u2) ? u2 =  1.0: u2;
    Precision::IsNegativeInfinite(v1) ? v1 = -1.0: v1;
    Precision::IsPositiveInfinite(v2) ? v2 =  1.0: v2;

    // tesselate the parametric space.
    Standard_Integer aStep = 30;
    Standard_Real uDelta = (u2 - u1) / aStep;
    Standard_Real vDelta = (v2 - v1) / aStep;

    for (Standard_Integer i = 0; i <= aStep; ++i)
    {
        for (Standard_Integer j = 0; j <= aStep; ++j)
        {
            Standard_Real u = u1 + i * uDelta;
            Standard_Real v = v1 + j * vDelta;

            aUVPoints->push_back(osg::Vec3(u, v, 0.0));
        }
    }

    // triangulate the parametric space.
    dt->setInputPointArray(aUVPoints);
    dt->triangulate();

    for (osg::Vec3Array::const_iterator j = aUVPoints->begin(); j != aUVPoints->end(); ++j)
    {
        // evaluate the point on the surface
        gp_Pnt aPoint = theSurface->Value((*j).x(), (*j).y());

        aPoints->push_back(osg::Vec3(aPoint.X(), aPoint.Y(), aPoint.Z()));
    }

    //aGeometry->setVertexArray(aUVPoints);
    aGeometry->setVertexArray(aPoints);
    aGeometry->addPrimitiveSet(dt->getTriangles());

    aGeode->addDrawable(aGeometry);

    // use smoothing visitor to set the average normals
    osgUtil::SmoothingVisitor sv;
    sv.apply(*aGeode);

    // set material for the surface
    osg::ref_ptr<osg::StateSet> aStateSet = aGeode->getOrCreateStateSet();
    osg::ref_ptr<osg::Material> aMaterial = new osg::Material();

    aMaterial->setDiffuse(osg::Material::FRONT, osg::Vec4(1.0f, 1.0f, 0.0f, 1.0f));
    aMaterial->setSpecular(osg::Material::FRONT, osg::Vec4(1.0f, 1.0f, 1.0f, 1.0f));
    aMaterial->setShininess(osg::Material::FRONT, 100.0f);

    aStateSet->setAttribute(aMaterial);

    return aGeode.release();
}

为了与另一篇blog中的区别,在OpenSceneGraph中绘制OpenCascade的曲面: http://www.cppblog.com/eryar/archive/2013/08/11/202466.html

特意加上了材质和光照效果。离散的曲面效果如下图所示:

wps_clip_image-32104

Figure 2.1 Shaded Surfaces in OpenSceneGraph

wps_clip_image-18080

Figure 2.2 Mesh of the Surfaces in OpenSceneGraph

为了显示出光照效果,使用了osgUtil::SmoothingVisitor来自动计算三角网格的平均法向。从上图可知,这种方式是将曲面的参数空间均匀剖分得到的曲面,当剖分得密时,数据量大,但显示得逼真。剖分疏时,数据量小,显示失真。

利用特征敏感网格重剖技术,可以使用较少的三角面片来比较精确地表示几何模型,如下图所示:(图片来源: http://cg.cs.tsinghua.edu.cn/papers/TVCG2007featuresensitive.pdf)

wps_clip_image-22865

Figure 2.3 Feature sensitive remeshing ( http://cg.cs.tsinghua.edu.cn/)

3. Holes in the Surface

当曲面上有开孔时,开孔的信息可以通过WIRE来获得。对于组成开孔的WIRE的每条EDGE,可以通过曲面上的曲线PCurve来将开孔的参数统一到曲面的UV参数空间。

wps_clip_image-21923

Figure 3.1 Hole in Parametric UV space

在OpenSceneGraph中实现代码如下所示:

osg::Node* BuildSurface(const Handle_Geom_Surface &theSurface, const Handle_Geom2d_Curve &thePCurve)
{
    osg::ref_ptr<osg::Geode> aGeode = new osg::Geode();
    osg::ref_ptr<osg::Geometry> aGeometry = new osg::Geometry();

    osg::ref_ptr<osg::Vec3Array> aUVPoints = new osg::Vec3Array();
    osg::ref_ptr<osg::Vec3Array> aPoints = new osg::Vec3Array();
    osg::ref_ptr<osg::Vec3Array> aBounds = new osg::Vec3Array();

    osg::ref_ptr<osgUtil::DelaunayTriangulator> dt = new osgUtil::DelaunayTriangulator();
    osg::ref_ptr<osgUtil::DelaunayConstraint> dc = new osgUtil::DelaunayConstraint();

    // build triangulation for the parametric space.
    Standard_Real u1 = 0.0;
    Standard_Real u2 = 0.0;
    Standard_Real v1 = 0.0;
    Standard_Real v2 = 0.0;

    theSurface->Bounds(u1, u2, v1, v2);

    Precision::IsNegativeInfinite(u1) ? u1 = -1.0: u1;
    Precision::IsPositiveInfinite(u2) ? u2 =  1.0: u2;
    Precision::IsNegativeInfinite(v1) ? v1 = -1.0: v1;
    Precision::IsPositiveInfinite(v2) ? v2 =  1.0: v2;

    // tesselate the parametric space.
    Standard_Integer aStep = 30;
    Standard_Real uDelta = (u2 - u1) / aStep;
    Standard_Real vDelta = (v2 - v1) / aStep;

    for (Standard_Integer i = 0; i <= aStep; ++i)
    {
        for (Standard_Integer j = 0; j <= aStep; ++j)
        {
            Standard_Real u = u1 + i * uDelta;
            Standard_Real v = v1 + j * vDelta;

            aUVPoints->push_back(osg::Vec3(u, v, 0.0));
        }
    }

    Standard_Real pDelta = (thePCurve->LastParameter() - thePCurve->FirstParameter()) / aStep;
    for (Standard_Integer c = 0; c <= aStep; ++c)
    {
        gp_Pnt2d p = thePCurve->Value(thePCurve->FirstParameter () + c * pDelta);

        aBounds->push_back(osg::Vec3(p.X(), p.Y(), 0.0));
    }

    dc->setVertexArray(aBounds);
    dc->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::LINE_LOOP, 0, aBounds->size()));

    // triangulate the parametric space.
    dt->addInputConstraint(dc);
    dt->setInputPointArray(aUVPoints);
    dt->triangulate();
    dt->removeInternalTriangles(dc);

    for (osg::Vec3Array::const_iterator j = aUVPoints->begin(); j != aUVPoints->end(); ++j)
    {
        // evaluate the point on the surface
        gp_Pnt aPoint = theSurface->Value((*j).x(), (*j).y());

        aPoints->push_back(osg::Vec3(aPoint.X(), aPoint.Y(), aPoint.Z()));
    }

    //aGeometry->setVertexArray(aUVPoints);
    aGeometry->setVertexArray(aPoints);
    aGeometry->addPrimitiveSet(dt->getTriangles());

    aGeode->addDrawable(aGeometry);

    // use smoothing visitor to set the average normals
    osgUtil::SmoothingVisitor sv;
    sv.apply(*aGeode);

    // set material for the surface
    osg::ref_ptr<osg::StateSet> aStateSet = aGeode->getOrCreateStateSet();
    osg::ref_ptr<osg::Material> aMaterial = new osg::Material();

    aMaterial->setDiffuse(osg::Material::FRONT, osg::Vec4(1.0f, 1.0f, 0.0f, 1.0f));
    aMaterial->setSpecular(osg::Material::FRONT, osg::Vec4(1.0f, 1.0f, 1.0f, 1.0f));
    aMaterial->setShininess(osg::Material::FRONT, 100.0f);

    aStateSet->setAttribute(aMaterial);

    return aGeode.release();
}

开孔的实现主要也是用osgUtil::DelaunayConstraint,将孔中的三角形去除。如下图所示为在球面和锥面开孔:

wps_clip_image-1325

Figure 3.2 Holes on Sphere and Cone Surface

wps_clip_image-1019

Figure 3.3 Mesh for Sphere and Cone with holes

由上图可知,对于有拓朴结构的三维模型数据,可以由WIRE得到组成孔的每条边Edge,根据Edge中PCurve可以找到对应的曲面。通过PCurve将开孔数据统一到参数空间中。剖分完带孔的参数空间,再映射回三维空间就得到开孔的曲面了。


4. Conclusion

原来一直百思不得其解的问题现在已经豁然开朗,对三维模型的可视化有了一定的理解。借助于这些开源库,对相关知识的学习要轻松许多,可以将许多国产教材上断续的理论知识与实践衔接起来。


5. Acknowledgement

感谢OpenCascade和OpenSceneGraph的开放和分享,让学习变得轻松有趣。

6. Reference

1. 孙家广, 胡事民等. 计算机图形学. 清华大学出版社. 2000

2. 赵罡, 穆国旺, 王拉柱译. 非均匀有理B样条. 清华大学出版社. 2010

3. Jonathan R. Shewchuk. Triangle: http://www.cs.cmu.edu/~quake/triangle.html

4. 汪嘉业 王文平 屠长河 杨承磊. 计算几何及应用.  科学出版社. 2011

5. 王成恩. 面向科学计算的网格划分与可视化技术. 科学出版社. 2011

6. 周培德. 计算几何-算法设计与分析. 清华大学出版社. 2008

7. http://cg.cs.tsinghua.edu.cn/

8. Mesh Algorithm in OpenCascade:

http://www.cppblog.com/eryar/archive/2014/04/06/206484.html

 

Source code and PDF Version: Visualize Surface by Delaunay Triangulator


OSG中的DelaunayTriangulator三角化方法和结果转化为PCL的mesh形式
zhaoxr233的博客
11-20 1691
本文的目的是了解OSG::DelaunayTriangulator方法实现三角化的相关知识 最初的目的是想利用osg中的Delaunay三角化方法进行3维点云的网格重建,但是最终没能达到目的,本文知识记录了我的学习过程、相关的理论方法以及相关的知识,如果有误,希望可以联系我进行改正; 基础:使用该方法必须安装OpenSceneGraph库,可以直接安装或者源码编译安装,后者安装麻烦但是便于查看...
osg三维重建的两种方法剖析:三角面片(osgUtil::DelaunayTriangulator)和四角面片(osg::HeightField)
热门推荐
菜鸟进化史
06-18 1万+
最近项目中需要利用osg重建三维曲面,所以学习了一下。 第一,我先用的狄洛尼三角形的方法,即osgUtil::DelaunayTriangulator,用这种方法的特点是: 1.首先必须给其一个存储三维点集的数组,该方法会对这些杂乱无章的散点自动排序,然后就利用这些排好序的,符合三角网构建规则的散点去构建三角网,需要注意的是经过dt->setInputPointArray(coords);这句
OSG :三维无序离散点构建Delaunay三角网
weixin_30321709的博客
06-20 1318
利用OSG的osgUtil库里面的DelaunayTriangulator类。 osgUtil::DelaunayTriangulator* trig = new osgUtil::DelaunayTriangulator(); trig->setInputPointArray(points); bool r = trig->triangul...
visualize.js
05-12
《使用JavaScript库visualize.js实现DWG文件预览技术详解》 在当今的Web开发领域,用户对于在线预览各种文件格式的需求日益增强,尤其是在工程、设计和建筑等行业,DWG(AutoCAD Drawing)文件的预览尤为重要。DWG...
visualize-object-model-3d 开线程显示3D点云
最新发布
01-09
在IT领域,尤其是在计算机图形学和可视化技术中,"visualize-object-model-3d 开线程显示3D点云"这个主题涉及到多个重要的知识点。3D点云是一种数据结构,它由大量的三维坐标点组成,通常用于表示物体或场景的表面。...
visualize_algorithms
02-20
可视化算法 项目设置 npm install 编译和热重装以进行开发 npm run serve 编译并最小化生产 npm run build 整理和修复文件 npm run lint 自定义配置 请参阅。
visualize data
12-22
Load, manipulate, and visualize data (using NumPy and Matplotlib) import numpy as np import matplotlib.pyplot as plt %matplotlib inline a=np.loadtxt(“name”, usecols=(0), unpack=True, delimiter=”,”...
Visualize-Sorting-Algorithm:以更好的方式可视化排序算法
04-30
在这个名为"Visualize-Sorting-Algorithm"的项目中,主要目标是通过可视化技术来更好地理解和展示几种经典的排序算法,包括合并排序、快速排序和堆排序。这三种排序算法各有特点,适用于不同的场景,下面将对它们...
osg::DelaunayTriangular解析个人理解(一)
qq_17792451的博客
03-09 518
采用的驻点插入算法,距离是按平面来算的。z轴不算在内。 //class Triangle//只存储索引 public: Triangle(): a_(0), b_(0), c_(0) {} //typedef GLuint Vertex_index;,三角形建立时即存储了索引值,points数组是已经排过序的顶点数组, //排序函数是Sample_point_compar...
OSG 交互事件、DELAUNAY三角网绘制
PHP代码的博客
02-16 325
狄洛尼Delaunay三角网是所有可能的三角网中在地形拟合方面最出色的方法。生成Delaunay三角网的传统算法主要为Lawson算法和Bowyer-Watson算法。
OSG图形引擎中三点计算外接圆-Delaunay三角剖分
yrcpp的博客
07-24 163
osg的DelaunayTriangulator.cpp中的三角形剖分开始是对点集合按照x大小优先,再y大小优先排序过的,所以会有开始的sort方法,然后判断点在三角形外接圆右边该三角形也是Delaunay三角形,也加入triangle list中了,而且它是constrained delaunary triangulation, 能处理边界,具体计算几何课上有讲。osg中也有计算三点外接圆的实现代码,不过在cpp中,在DelaunayTriangulator.cpp文件中有函数。
OSG学习:几何体的操作(二)——交互事件、Delaunay三角网绘制
韶光
06-19 3419
以下内容来自:  1、《OpenSceneGraph三维渲染引擎编程指南》肖鹏 刘更代 徐明亮 清华大学出版社  2、《OpenSceneGraph三维渲染引擎设计与实践》王锐 钱学雷 清华大学出版社 3、自己的总结 下载完整工程OSG_7_OperatingDelaunay 创建C++项目后,首先需要配置OSG环境,具体步骤看OSG学习:WIN10系统下OSG+VS2017编译及...
记录一下delaunary三角剖分过程
闲暇余客
12-18 484
一种是,简单的对点的关系进行一下约束,硬性生成三角形面; 第二种: 用delaunary三角构建.(区别明显) 第三种: 是可以进行角度和面积约束的构建(暂时没有,后面用新的平台进行搭建) 这种构建,应该是拓扑结构保持的比较好的.不过这个算法暂时没有移植. ==>下次使用tetGen,这个库来进行四面体剖分. 目前的带上使用(osg+qt; IDE:vs+qt_tool这些工具,进行搭建一个三维处理框架平台. (虽然也使用过sharpGL进行过平移,旋转的手动设计,但是工作量..
OsgDelaunay三角网绘制及其如何限制生成的三角形
LiNotis的博客
08-05 1832
OsgDelaunay三角网绘制及其如何限制生成的三角形 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、如何生成三角网二、实现1.约束2.整体代码总结 前言 使用Osg内部封装的Delaunay三角网绘制图像时,有时会发现会生成很多,意料之外的狭长三角形,在我学习的过程中发现Osg本身的约束类 osgUtil::DelaunayTriangulator,只能对于生成图像形成一个区域的清除,如果可以通过此约束类达成对生成的三角形进行约束,也请留言相互学习。 提示:
osg示例代码解析---osgdelaunay
方京的博客
01-02 2173
本示例程序主要说明如何用osgUtil::DelaunayTriangulator类建立约束的delaunay三角网,delaunay三角网主要用于基于离散点数据构建三维表面。如经常用于构建地形表面,本示例程序就是用该类构建一个地形,然后添加一些约束条件,在地形上绘制道路、区域等要素,示例程序的主要函数为:makedelaunay(),该函数输入的参数是约束的数目,输出的是一个组节点,下面对这个函数的实现进行说明。
osgdelaunay例子
yungis的专栏
01-30 2815
本例子演示了delaunay三角网。 makedelaunay这个函数演示了创建三角网的方法,DelaunayTriangulator这个类,创建delaunay三角网, DelaunayConstraint是三角网的约束。 读取二维纹理,通过getpt这个函数获取点。 std::vector pyrlist;     osg::ref_ptr wc; // This example
osg入门系列14-狄落泥三角网
GPU全栈博主-程序哥
09-22 2693
#include #include #include #include #include #include #include #include #include #include #include #include "Tex.h" #include using namespace std; int main() {
hoops visualize
09-01
"Hoops Visualize" 是一种辅助训练工具,其主要目的是帮助篮球运动员提高技能,并提供更好的参赛表现。这个工具通过使用虚拟现实(VR)技术,将运动员置身于一个模拟的训练和比赛环境中。 使用"Hoops Visualize",运动员可以通过佩戴VR头盔和手柄,进入一个数字化的篮球场景。他们可以在这个虚拟环境中进行各种训练,如投篮技巧、运球、防守动作等。这些训练可以根据运动员的水平和需求进行个性化设置,从而最大程度地提高训练效果。 这个工具的一个重要特点是能够提供即时的反馈和分析。通过内置的传感器和监测设备,"Hoops Visualize"可以实时监测运动员的动作和表现,并向其提供实时指导。运动员可以看到自己在虚拟场景中的动作,并获得针对性的建议,以改进技术。 此外,"Hoops Visualize"还提供了一系列多样化的比赛场景,模拟真实比赛中的压力和环境。这样,运动员可以通过模拟比赛,提前预感到比赛的紧张氛围,并提前做相应准备。这对于提高比赛的自信心和心理素质非常有帮助。 总的来说,"Hoops Visualize" 是一种创新的、高效的篮球训练工具,它运用了虚拟现实技术来帮助运动员提高技能和提升比赛表现。通过提供个性化的训练和即时反馈,以及模拟比赛环境,这个工具有潜力对篮球运动员的训练和发展产生积极的影响。
写文章

热门文章

  • 解决Perhaps you are running on a JRE rather than a JDK?问题 45017
  • 远程连接MySQL报错ERROR 2003解决办法 38352
  • Makefile编译选项CC与CXX/CPPFLAGS、CFLAGS与CXXFLAGS/LDFLAGS 30621
  • 快速傅里叶变换(FFT)的原理及公式 29190
  • Eigen中四元数Quaterniond的初始 26003

分类专栏

  • 笔记 15篇
  • Apple 6篇
  • java 67篇
  • Jetty 7篇
  • linux 152篇
  • Log4j
  • python 4篇
  • WebServer 25篇
  • 云计算 89篇
  • 版本管理 17篇
  • 管理 26篇
  • cache 26篇
  • 人工智能 255篇
  • web前端 21篇
  • 图像与音视频 127篇
  • 关系数据库 26篇
  • 认证与鉴权 2篇
  • android 130篇
  • 测试 11篇
  • B2C 1篇
  • 算法 277篇
  • 广告 1篇
  • 硬件 37篇
  • windows 3篇
  • 产品设计 3篇
  • c/c++ 123篇

最新评论

  • 图片柱面投影简单实现

    Phil_gH: 你好,请问有柱面反投影的算法代码作为参考吗?一直没找到

  • 相机等效焦距和视场角计算

    m0_60510239: 18/2.9

  • 使用Meshlab软件将点云(Point Cloud)转换为模型(Mesh)

    hjwang1: 试一试泊松重建mesh看看

  • 使用Meshlab软件将点云(Point Cloud)转换为模型(Mesh)

    qq_44638652: 形成 Mesh 后,图形直接变样了,该怎么处理啊

  • IMU之磁力计校准&地磁场&计算磁航向

    hjwang1: 各轴需要参数补偿

大家在看

  • Flutter 安装,配置,运行第一个app 1 549
  • 第34次csp 522
  • 构建高可用和高防御力的云服务架构:从DDoS高防到PolarDB
  • Dockerfile的详解与案例
  • 【Qt 再谈Lambda 结合Qt中的信号和槽机制】 188

最新文章

  • C++11 defer_lock try_to_lock adopt_lock
  • 高阶滤波器
  • 编写自己的Matcher与如何让编译器识别被mock的重载函数
2024年2篇
2023年1篇
2022年1篇
2021年43篇
2020年111篇
2019年58篇
2018年52篇
2017年89篇
2016年35篇
2015年104篇
2014年39篇
2013年126篇
2012年83篇
2011年116篇
2010年16篇
2009年1篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

PHP网站源码灏哥seo网站关键词优化太原网站seo优化推广青岛企业网站建设优化服务任丘网站优化哪家好转化型网站建设与优化网络优化网站企业网站平台优化深圳优化网站关键词网站推优化河北seo网站优化智能网站优化哪家便宜铜陵网站首页优化价格江苏网站优化推广方案莆田市网站优化渠道清远卫浴网站seo优化密云公司网站优化做神马网站优化排名滨州网站优化建设公司威海网站优化南湖站长网站优化消防员优化网站ntld优化对网站有什么好处网站推广优化拾首选金手指2郑州网站优化品牌永春网站推广优化泉州出口加工区网站优化网站优化是哪个专业网站关键词优化畅销易速达网站优化周记北京网站优化推广怎么样歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化