<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Voxel on ながむしメモ</title><link>https://nagakagachi.github.io/categories/voxel/</link><description>Recent content in Voxel on ながむしメモ</description><generator>Hugo</generator><language>ja-JP</language><lastBuildDate>Sat, 06 Aug 2022 18:43:49 +0900</lastBuildDate><atom:link href="https://nagakagachi.github.io/categories/voxel/index.xml" rel="self" type="application/rss+xml"/><item><title>InstantNeRFで任意画像から3D再構成をするまでの流れメモ</title><link>https://nagakagachi.github.io/entry/2022/08/06/184349/</link><pubDate>Sat, 06 Aug 2022 18:43:49 +0900</pubDate><guid>https://nagakagachi.github.io/entry/2022/08/06/184349/</guid><description>&lt;p&gt;&lt;a class="keyword" href="http://d.hatena.ne.jp/keyword/NVIDIA"&gt;NVIDIA&lt;/a&gt; InstantNeRF (InstantNGP) の環境セットアップと,&lt;br /&gt;&#10;自身で用意した画像群を使った3D再構成をするフローのメモ.&lt;/p&gt;&lt;p&gt;基本的に公式&lt;a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%EA%A5%DD%A5%B8%A5%C8%A5%EA"&gt;リポジトリ&lt;/a&gt;のセットアップ手順そのまま.&lt;br /&gt;&#10;&lt;iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fgithub.com%2FNVlabs%2Finstant-ngp" title="GitHub - NVlabs/instant-ngp: Instant neural graphics primitives: lightning fast NeRF and more" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="https://github.com/NVlabs/instant-ngp"&gt;github.com&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;&#10;&lt;ul class="table-of-contents"&gt;&#10;&lt;li&gt;&lt;a href="#セットアップ"&gt;セットアップ&lt;/a&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="#実行環境"&gt;実行環境&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#Requirementsのセットアップ"&gt;Requirementsのセットアップ&lt;/a&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="#CUDA"&gt;CUDA&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#CMAKE"&gt;CMAKE&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#Python"&gt;Python&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#Python-Modules"&gt;Python Modules&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#OptiX"&gt;OptiX&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#InstantNgpのビルド"&gt;InstantNgpのビルド&lt;/a&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="#リポジトリの取得"&gt;リポジトリの取得&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#ビルド"&gt;ビルド&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#サンプルを実行"&gt;サンプルを実行&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#3D再構成の準備"&gt;3D再構成の準備&lt;/a&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="#COLMAP"&gt;COLMAP&lt;/a&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="#ダウンロード"&gt;ダウンロード&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#環境変数Pathへの追加"&gt;環境変数Pathへの追加&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#3D再構成"&gt;3D再構成&lt;/a&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="#画像ファイルの準備"&gt;画像ファイルの準備&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#COLMAPによる画像群カメラ姿勢推定"&gt;COLMAPによる画像群カメラ姿勢推定&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#InstantNeRFを実行"&gt;InstantNeRFを実行&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="section"&gt;&#10;&lt;h3 id="セットアップ"&gt;セットアップ&lt;/h3&gt;&#10;&lt;div class="section"&gt;&#10;&lt;h4 id="実行環境"&gt;実行環境&lt;/h4&gt;&#10;&lt;p&gt;WIndows10 64bit&lt;/p&gt;&#10;&lt;p&gt;RTX 3070&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;div class="section"&gt;&#10;&lt;h4 id="Requirementsのセットアップ"&gt;Requirementsのセットアップ&lt;/h4&gt;&#10;&lt;div class="section"&gt;&#10;&lt;h5 id="CUDA"&gt;CUDA&lt;/h5&gt;&#10;&lt;p&gt;"v10.2 or higher"&lt;br /&gt;&#10;11.7 をインストール.&lt;br /&gt;&#10;&lt;iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fdeveloper.nvidia.com%2Fcuda-toolkit" title="CUDA Toolkit - Free Tools and Training" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="https://developer.nvidia.com/cuda-toolkit"&gt;developer.nvidia.com&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;</description></item><item><title>Voxel Mesh化手法についてメモ( Voxel Meshing )</title><link>https://nagakagachi.github.io/entry/2020/08/22/180515/</link><pubDate>Sat, 22 Aug 2020 18:05:15 +0900</pubDate><guid>https://nagakagachi.github.io/entry/2020/08/22/180515/</guid><description>&lt;p&gt;SDFなどのVoxelからMeshを生成する手法のメモ。&lt;/p&gt;&#10;&lt;p&gt;もとのSDFのセルと、Mesh化で管理されるVoxelは一致しないので注意。&lt;/p&gt;&#10;&lt;p&gt;もとのSDFのセル中心を頂点とするようなVoxel上でMesh化が実行される。&lt;/p&gt;&#10;&lt;div class="section"&gt;&#10;&lt;h3 id="marching--cubes"&gt;Marching Cubes&lt;/h3&gt;&#10;&lt;p&gt;&lt;a href="http://paulbourke.net/geometry/polygonise/"&gt;Polygonising a scalar field (Marching Cubes)&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;Voxelの頂点のパターンからそのVoxelのポリゴンパターンをLookupしてMesh化する。&lt;/p&gt;&#10;&lt;p&gt;シャープな形状が作りにくいらしい。&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;div class="section"&gt;&#10;&lt;h3 id="dual-contour"&gt;Dual Contour&lt;/h3&gt;&#10;&lt;p&gt;&lt;a href="https://people.eecs.berkeley.edu/~jrs/meshpapers/SchaeferWarren2.pdf"&gt;https://people.eecs.berkeley.edu/~jrs/meshpapers/SchaeferWarren2.pdf&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;あるVoxelを構成する辺について、SDFをの符号が異なる両端を持つ辺に注目し、辺を横切るような等値面の交差位置と法線をSDFの勾配等から計算する。&lt;/p&gt;&#10;&lt;p&gt;一つのVoxelについて境界面は複数存在する可能性があり、すべての境界面からの距離の自乗和が最小になるような一点をそのVoxel内の頂点として最小二乗法で推定する。&lt;/p&gt;&#10;&lt;p&gt;すべてのVoxelについて上記の点を計算し、隣接Cellで点同士をつなげてMeshを構成する。&lt;/p&gt;&#10;&lt;p&gt;シャープな形状を作ることができるらしい。&lt;/p&gt;&#10;&lt;p&gt;Voxel毎に最小二乗法を解く必要があるためコストが高い可能性。&lt;/p&gt;&#10;&lt;p&gt;また自己交差メッシュができてしまう可能性もある。&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;div class="section"&gt;&#10;&lt;h3 id="surfacenets"&gt;SurfaceNets&lt;/h3&gt;&#10;&lt;p&gt;&lt;a href="https://www.merl.com/publications/docs/TR99-24.pdf"&gt;https://www.merl.com/publications/docs/TR99-24.pdf&lt;/a&gt;&lt;br /&gt;&#10;&lt;a href="https://medium.com/@bonsairobo/smooth-voxel-mapping-a-technical-deep-dive-on-real-time-surface-nets-and-texturing-ef06d0f8ca14"&gt;Smooth Voxel Mapping: a Technical Deep Dive on Real-time Surface Nets and Texturing | by DreamCat Games | Aug, 2020 | Medium&lt;/a&gt;&lt;br /&gt;&#10;&lt;a href="https://github.com/TomaszFoster/NaiveSurfaceNets/blob/master/NaiveSurfaceNets.cs"&gt;NaiveSurfaceNets/NaiveSurfaceNets.cs at master &amp;middot; TomaszFoster/NaiveSurfaceNets &amp;middot; GitHub&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&#10;&lt;p&gt;Meshを構成するVoxel内の頂点を推定することはDual Contourと同様だが、複数ある辺と等値面の交差位置を平均した地点を頂点位置とするところが異なる。&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;hr&gt;&#10;&lt;p&gt;&lt;a href="https://nagakagachi.hatenablog.com/entry/2020/08/22/180515"&gt;元のはてなブログ記事&lt;/a&gt;&lt;/p&gt;</description></item></channel></rss>