主頁 >  其他 > 網格優化Remesh——Tangential Smooth

網格優化Remesh——Tangential Smooth

2023-05-22 07:45:19 其他

一、Laplace平滑

簡單的拉普拉斯平滑演算法的原理是將每個頂點都移動到相鄰頂點的平均位置,即采用所謂傘狀算子:

在傘狀結構中表示這樣的程序如下圖:

 

拉普拉斯平滑演算法有很多進一步的變形,首先在求取平均位置時,可以采用不同的加權策略,例如對不同的鄰接點采用不同的權值,一般來說,距離中心點P較遠的鄰接點,我們可以讓他對P平滑后的位置影響小一點,這樣就可以采用一種距離的倒數為權值的拉普拉斯平滑,

有時為了控制平滑的速率,也會引入引數lambda來控制平滑的速率,即從原來所執行的:

轉變成同時,平滑演算法往往可以反復對Mesh執行,使得Mesh越來越光順,迭代次數T也是平滑演算法中重要的引數,

 

二、切向Laplace平滑

 右邊圖中的第三幅,代表reproject的效果,需要額外實作(比如用AABBtree等),在公式中沒有體現,

 

另一種寫法:

區別在于(I - ni . ni.T),還有正負號 

 

 

三、改進的切向Laplace平滑(基于面積的切向Laplace平滑)

 首先計算gi:

 然后用以下公式將gi被投影會pi的切面:

 其中ni是pi的法向,λ是阻尼系數用來防止震蕩,

 

一些Voronoi面積大的節點擁有更大的重力,所以吸引了其它節點,因此減小了他們自身的面積,一般通過<20次迭代,面積方差可以減小5倍,最終產生一個每個節點面積大致相同的網格,如下圖所示,

 

代碼:

Eigen::Vector3d tangential_smooth(const Tuple& t)
{
    auto one_ring_tris = get_one_ring_tris_for_vertex(t);
    if (one_ring_tris.size() < 2) return vertex_attrs[t.vid(*this)].pos;
    Eigen::Vector3d after_smooth = smooth(t);  // 計算了普通Laplace平滑后的點位置
    // get normal and area of each face
    auto area = [](auto& m, auto& verts) {
        return ((m.vertex_attrs[verts[0].vid(m)].pos - m.vertex_attrs[verts[2].vid(m)].pos)
                    .cross(
                        m.vertex_attrs[verts[1].vid(m)].pos - m.vertex_attrs[verts[2].vid(m)].pos))
                   .norm() /
               2.0;
    };
    auto normal = [](auto& m, auto& verts) {
        return ((m.vertex_attrs[verts[0].vid(m)].pos - m.vertex_attrs[verts[2].vid(m)].pos)
                    .cross(
                        m.vertex_attrs[verts[1].vid(m)].pos - m.vertex_attrs[verts[2].vid(m)].pos))
            .normalized();
    };
    auto w0 = 0.0;
    Eigen::Vector3d n0(0.0, 0.0, 0.0);
    for (auto& e : one_ring_tris) {
        auto verts = oriented_tri_vertices(e);
        w0 += area(*this, verts);
        n0 += area(*this, verts) * normal(*this, verts);
    }
    n0 /= w0;
    if (n0.norm() < 1e-10) return vertex_attrs[t.vid(*this)].pos;
    n0 = n0.normalized();
    after_smooth += n0 * n0.transpose() * (vertex_attrs[t.vid(*this)].pos - after_smooth);
    assert(check_mesh_connectivity_validity());
    return after_smooth;
}

  

四、非流形網格的平滑 

對于non-manifold網格,上面的公式是否還適用,有待調研,

 

 

參考文獻:

sgp04 M. Botsch and L. Kobbelt / Remeshing for Multiresolution Modeling

Polygon mesh processing (Botsch M., et al.) Chapter6 Section 6.5 Triangle-based Remeshing

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/553019.html

標籤:其他

上一篇:CesiumJS 原始碼雜談 - 時間與時鐘系統

下一篇:返回列表

標籤雲
其他(159437) Python(38156) JavaScript(25441) Java(18078) C(15229) 區塊鏈(8267) C#(7972) AI(7469) 爪哇(7425) MySQL(7203) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5871) 数组(5741) R(5409) Linux(5340) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4574) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2433) ASP.NET(2403) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) .NET技术(1975) 功能(1967) Web開發(1951) HtmlCss(1940) python-3.x(1918) C++(1918) 弹簧靴(1913) xml(1889) PostgreSQL(1878) .NETCore(1861) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 網格優化Remesh——Tangential Smooth

    一、Laplace平滑 簡單的拉普拉斯平滑演算法的原理是將每個頂點都移動到相鄰頂點的平均位置,即采用所謂傘狀算子: 在傘狀結構中表示這樣的程序如下圖: 拉普拉斯平滑演算法有很多進一步的變形,首先在求取平均位置時,可以采用不同的加權策略,例如對不同的鄰接點采用不同的權值。一般來說,距離中心點P較遠的鄰接點 ......

    uj5u.com 2023-05-22 07:45:19 more
  • CesiumJS 原始碼雜談 - 時間與時鐘系統

    [TOC] 你知道嗎? - Cesium 是元素 **銫** 的英文單詞,而 **銫原子鐘** 具有世界上最高的計時精度 - 時間,是時刻間隔的意思,時刻是靜態的點;而時間就指有起止時刻的一段范圍 - 很多應用都要有一個時鐘,例如 GPS 授時、實時渲染系統,時間可以測量很多事物,萬物運動也體現了時 ......

    uj5u.com 2023-05-22 07:45:04 more
  • HTTPS如何優化?

    由裸資料傳輸的 HTTP 協議轉成加密資料傳輸的 HTTPS 協議,給應用資料套了個「保護傘」,提高安全性的同時也帶來了性能消耗。

    因為 HTTPS 相比 HTTP 協議多一個 TLS 協議握手程序,目的是為了通過非對稱加密握手協商或者交換出對稱加密密鑰,這個程序最長可以花費掉 2 RTT,接著后... ......

    uj5u.com 2023-05-22 07:44:37 more
  • Nginx 入門實戰(5)--location 指令說明

    1、location 指令介紹 1.1、語法 語法 位置 location [ = | ~ | ~* | ^~ ] uri { ... }location @name { ... } server, location 1.2、匹配型別 型別 說明 = 精確匹配 空 或 ^~ 字串匹配 如果 ^~ ......

    uj5u.com 2023-05-22 07:44:18 more
  • Nginx 入門實戰(5)--location 指令說明

    1、location 指令介紹 1.1、語法 語法 位置 location [ = | ~ | ~* | ^~ ] uri { ... }location @name { ... } server, location 1.2、匹配型別 型別 說明 = 精確匹配 空 或 ^~ 字串匹配 如果 ^~ ......

    uj5u.com 2023-05-22 07:43:09 more
  • 網格優化Remesh——Tangential Smooth

    一、Laplace平滑 簡單的拉普拉斯平滑演算法的原理是將每個頂點都移動到相鄰頂點的平均位置,即采用所謂傘狀算子: 在傘狀結構中表示這樣的程序如下圖: 拉普拉斯平滑演算法有很多進一步的變形,首先在求取平均位置時,可以采用不同的加權策略,例如對不同的鄰接點采用不同的權值。一般來說,距離中心點P較遠的鄰接點 ......

    uj5u.com 2023-05-22 07:42:27 more
  • CesiumJS 原始碼雜談 - 時間與時鐘系統

    [TOC] 你知道嗎? - Cesium 是元素 **銫** 的英文單詞,而 **銫原子鐘** 具有世界上最高的計時精度 - 時間,是時刻間隔的意思,時刻是靜態的點;而時間就指有起止時刻的一段范圍 - 很多應用都要有一個時鐘,例如 GPS 授時、實時渲染系統,時間可以測量很多事物,萬物運動也體現了時 ......

    uj5u.com 2023-05-22 07:42:13 more
  • Pytest - pytest 命令(2) - 命令引數及含義

    ## Pytest 命令 ### pytest 命令引數及含義 **下面串列是執行pytest命令比較常見的一些引數及含義** | 引數 | 含義 | | | | | -q | 輸出的結果縮短顯示 | | -s | 顯示在python程式中的print輸出的內容,如是不加則不會顯示 | | --du ......

    uj5u.com 2023-05-22 07:41:28 more
  • HTTPS如何優化?

    由裸資料傳輸的 HTTP 協議轉成加密資料傳輸的 HTTPS 協議,給應用資料套了個「保護傘」,提高安全性的同時也帶來了性能消耗。

    因為 HTTPS 相比 HTTP 協議多一個 TLS 協議握手程序,目的是為了通過非對稱加密握手協商或者交換出對稱加密密鑰,這個程序最長可以花費掉 2 RTT,接著后... ......

    uj5u.com 2023-05-22 07:40:53 more
  • AtCoder Beginner Contest 302

    ## [A - Attack (abc302 a)](https://atcoder.jp/contests/abc302/tasks/abc302_a) ### 題目大意 給定怪物的血量$a$和你每次攻擊扣除的血量 $b$,問打多少次怪物才會死。 ### 解題思路 答案即為$\lceil \fra ......

    uj5u.com 2023-05-21 07:46:54 more