<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blender | CGたてはま</title>
	<atom:link href="https://cgbeginner.net/category/blender/feed/" rel="self" type="application/rss+xml" />
	<link>https://cgbeginner.net</link>
	<description>個人CGクリエイターの雑記帳</description>
	<lastBuildDate>Fri, 16 Jan 2026 05:55:12 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://cgbeginner.net/wp-content/uploads/2016/09/cropped-favicon_512-32x32.png</url>
	<title>Blender | CGたてはま</title>
	<link>https://cgbeginner.net</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">152190934</site>	<item>
		<title>Blenderで「OpenGL 4.3 が必要」エラーでクラッシュする問題解決メモ</title>
		<link>https://cgbeginner.net/blender-opengl-error/</link>
					<comments>https://cgbeginner.net/blender-opengl-error/#respond</comments>
		
		<dc:creator><![CDATA[CGBeginner]]></dc:creator>
		<pubDate>Wed, 03 Dec 2025 19:01:29 +0000</pubDate>
				<category><![CDATA[Blender]]></category>
		<category><![CDATA[コンピュータ]]></category>
		<guid isPermaLink="false">https://cgbeginner.net/?p=2519</guid>

					<description><![CDATA[Windows 11 環境で RTX 5090 を 2 枚（デュアル構成）にしたところ、Blender でレンダリングを実行したタイミングで不定期にクラッシュしました。発生時には、 というメッセージが出て終了することがあ [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Windows 11 環境で RTX 5090 を 2 枚（デュアル構成）にしたところ、Blender でレンダリングを実行したタイミングで不定期にクラッシュしました。発生時には、</p>



<ul class="wp-block-list">
<li>Blender &#8211; Unsupported Graphics Card Configuration</li>



<li><code>A graphics card and driver with support for OpenGL 4.3 or higher is required. Plugging all monitors into your primary graphics card might resolve this issue. Installing the latest driver for your graphics card could also help.</code></li>
</ul>



<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="419" height="206" src="https://cgbeginner.net/wp-content/uploads/2025/12/fde3bcb6a04b377d548c65b1b3bd4ea8.png" alt="" class="wp-image-2520" srcset="https://cgbeginner.net/wp-content/uploads/2025/12/fde3bcb6a04b377d548c65b1b3bd4ea8.png 419w, https://cgbeginner.net/wp-content/uploads/2025/12/fde3bcb6a04b377d548c65b1b3bd4ea8-300x147.png 300w" sizes="(max-width: 419px) 100vw, 419px" /></figure>



<p>というメッセージが出て終了することがありました（GPU 自体は当然 OpenGL 4.3 以上対応のはずなのに、です）。</p>



<p>イベントログ上では Blender 側が <code>ucrtbase.dll</code> で <code>0xc0000005</code>（アクセス違反）で落ちる記録（Application Error 1000 / WER 1001）が残ることがあり、また WER 側には <code>LiveKernelEvent</code>（WATCHDOG/141 など）が出ることもありました。一方で、典型的な TDR（Display 4101）や nvlddmkm 153 が常に出る、という形ではありませんでした。</p>



<p>この問題が厄介だったのは、<strong>再現性が安定しない</strong>点です。ある時は同じシーンで通り、再起動を挟むと同じ操作で落ちる、という挙動になりました。</p>



<p>以下、いろいろChatGPTと相談しながら試した記録を記事にしています。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">環境の特徴</a></li><li><a href="#toc2" tabindex="0">切り分けで試したこと（うまくいかなかった／決定打にならなかったもの）</a><ol><li><a href="#toc3" tabindex="0">1) 片方ずつの GPU でレンダリング</a></li><li><a href="#toc4" tabindex="0">2) OCCT などで GPU 負荷テスト（PL 制限含む）</a></li><li><a href="#toc5" tabindex="0">3) Blender の設定・インストールを疑う（ポータブル ZIP / config 削除）</a></li><li><a href="#toc6" tabindex="0">4) CPU レンダリングでも同様に落ちることがある</a></li><li><a href="#toc7" tabindex="0">5) DDU → 最新 Studio Driver をオフラインでクリーンインストール</a></li><li><a href="#toc8" tabindex="0">6) iGPU を無効化</a></li></ol></li><li><a href="#toc9" tabindex="0">最終的に効いた対策（解決策）</a></li><li><a href="#toc10" tabindex="0">理屈</a><ol><li><a href="#toc11" tabindex="0">1) Blender は「UI/ビューポート＝OpenGL」で動いている</a></li><li><a href="#toc12" tabindex="0">2) デュアル GPU + 複数モニタでは「どの GPU が OpenGL を担当するか」が揺れます</a></li><li><a href="#toc13" tabindex="0">3) 「固定していないほうの GPU 接続モニタでも落ちない」理由</a></li></ol></li><li><a href="#toc14" tabindex="0">どちらの 5090 を指定するべきか</a></li><li><a href="#toc15" tabindex="0">これで CUDA / OptiX のレンダリングは 2 枚使えるのか</a></li><li><a href="#toc16" tabindex="0">グローバル固定のデメリット（起こり得ること）</a></li><li><a href="#toc17" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">環境の特徴</span></h2>



<p>今回のポイントは「デュアル GPU」だけではなく、<strong>モニタが複数枚で、両方の GPU に接続せざるを得ない構成</strong>だったことです。私の環境は6モニタなので、RTX 5090 は出力が 4 ポートのため物理的に全モニタを片方の GPU に集約することができません。</p>



<p>この前提があると、Windows と NVIDIA ドライバが「どちらの GPU で OpenGL コンテキストを作るか」を自動判定する場面で、意図しない選択が起きる余地が増えます。</p>



<h2 class="wp-block-heading"><span id="toc2">切り分けで試したこと（うまくいかなかった／決定打にならなかったもの）</span></h2>



<p>以下を試しました。</p>



<h3 class="wp-block-heading"><span id="toc3">1) 片方ずつの GPU でレンダリング</span></h3>



<p>Blender 側でデバイスを片方だけ有効にしてレンダリングし、さらに両方を有効にしてレンダリングも実施しました。両方を有効にした場合は、レンダリング時間が約半分（例：1分20秒→40秒程度）まで短縮し、<strong>計算自体は 2 枚使えている</strong>ことが確認できました。ここから「2 枚構成そのものが常に破綻する」という状況ではないと判断しました。</p>



<h3 class="wp-block-heading"><span id="toc4">2) OCCT などで GPU 負荷テスト（PL 制限含む）</span></h3>



<p>Afterburner で 2 枚とも Power Limit を 80% にした状態でも OCCT の 3D 負荷を継続でき、電力・温度・安定性の観点では致命的な兆候は見えませんでした。さらに、Blender のレンダリング時間が PL 80% と 100% で大差が出ないケースもあり、少なくとも「PL が原因で Blender が落ちる」という説明は成立しにくい状況でした。</p>



<h3 class="wp-block-heading"><span id="toc5">3) Blender の設定・インストールを疑う（ポータブル ZIP / config 削除）</span></h3>



<p>ポータブル版を使い、<code>C:\Users\&lt;User&gt;\AppData\Roaming\Blender Foundation\Blender</code> の設定を削除し、起動直後のデフォルトシーンでも試しました。しかし、それでも落ちる時は落ちました。したがって、<strong>特定アドオンや設定の破損だけが原因</strong>とも言い切れませんでした。</p>



<h3 class="wp-block-heading"><span id="toc6">4) CPU レンダリングでも同様に落ちることがある</span></h3>



<p>レンダリングを CPU に切り替えても落ちることがありました。ここが非常に重要で、これにより「CUDA/OptiX の計算部分だけの問題」ではなく、<strong>Blender が動作するための描画系（≒OpenGL 側）での問題</strong>を強く疑う方向に寄りました。</p>



<h3 class="wp-block-heading"><span id="toc7">5) DDU → 最新 Studio Driver をオフラインでクリーンインストール</span></h3>



<p>セーフモードで DDU を使い、LAN ケーブルを抜いてオフラインで Studio Driver を入れ直しました。一時的に改善したように見えましたが、再起動後に再発しました。つまり、これは「やる価値はあるが、今回の決定打ではなかった」という位置づけでした。</p>



<h3 class="wp-block-heading"><span id="toc8">6) iGPU を無効化</span></h3>



<p>iGPU（AMD Ryzen 内蔵 GPU）をデバイスマネージャで無効化し、再起動しましたが、問題は継続しました。よって今回の主因が iGPU の混在だと断定するのは難しい状態でした。</p>



<h2 class="wp-block-heading"><span id="toc9">最終的に効いた対策（解決策）</span></h2>



<p>NVIDIA コントロールパネルで、グローバル設定の <strong>「OpenGL レンダリング GPU （OpenGL rendering GPU）」</strong> を</p>



<ul class="wp-block-list">
<li><strong>Auto（自動）→ 特定の RTX 5090（メイン側）に固定</strong></li>
</ul>



<p>へ変更したところ、Blender のエラーが止まり、少なくとも同一条件での再現ができなくなりました。現状、これが最も説明力の高い「解決策」になりました。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="960" height="711" src="https://cgbeginner.net/wp-content/uploads/2025/12/0fe838e818f3b2bca509941fda78a583.png" alt="" class="wp-image-2521" srcset="https://cgbeginner.net/wp-content/uploads/2025/12/0fe838e818f3b2bca509941fda78a583.png 960w, https://cgbeginner.net/wp-content/uploads/2025/12/0fe838e818f3b2bca509941fda78a583-300x222.png 300w, https://cgbeginner.net/wp-content/uploads/2025/12/0fe838e818f3b2bca509941fda78a583-768x569.png 768w" sizes="(max-width: 960px) 100vw, 960px" /></figure>



<h2 class="wp-block-heading"><span id="toc10">理屈</span></h2>



<h3 class="wp-block-heading"><span id="toc11">1) Blender は「UI/ビューポート＝OpenGL」で動いている</span></h3>



<p>Blender は UI とビューポート描画を OpenGL で行います。したがって「レンダリングボタンを押した瞬間」に落ちたように見えても、その瞬間に OpenGL が関与する処理は十分にあり得ます。たとえば、レンダリング開始時には進捗 UI 更新、レンダー結果の表示領域の更新、描画コンテキストの再初期化、ウィンドウ移動・モニタ跨ぎに伴うコンテキスト再確立などが起こり得ます。</p>



<p>また、CPU レンダリングでも落ちることがあった点は、「計算（CUDA/OptiX/CPU）ではなく、表示系（OpenGL）起点のクラッシュ」が混ざっている説明と整合します。</p>



<h3 class="wp-block-heading"><span id="toc12">2) デュアル GPU + 複数モニタでは「どの GPU が OpenGL を担当するか」が揺れます</span></h3>



<p>モニタが複数で両方の GPU に接続されていると、アプリのウィンドウがどのモニタ上にあるか、OS がどのアダプタを優先として扱うか、ドライバの自動判定がどう働くか、という条件が絡みます。</p>



<p>この自動判定が不安定だったり、特定条件で誤った GPU を選ぶ（あるいは OpenGL コンテキスト作成が失敗する）と、アプリ側は「OpenGL 4.3 以上が必要」という“能力不足に見えるエラー”として落ちることがあります。実際には GPU の能力不足ではなく、<strong>OpenGL コンテキストが期待どおりに作れなかった</strong>ことが本質です。</p>



<p>そこで OpenGL rendering GPU を固定すると、OpenGL の担当 GPU がブレなくなり、コンテキスト作成・維持の条件が安定します。今回の改善はこの説明が最も自然です。</p>



<h3 class="wp-block-heading"><span id="toc13">3) 「固定していないほうの GPU 接続モニタでも落ちない」理由</span></h3>



<p>この挙動も矛盾ではありません。OpenGL rendering GPU を固定した場合、ウィンドウがどの GPU に接続されたモニタ上にあっても、OpenGL の実処理は指定 GPU で行われる（または少なくとも指定 GPU を優先）という形になります。そのため「非指定側モニタで操作したら必ず落ちる」ということにはなりません。</p>



<h2 class="wp-block-heading"><span id="toc14">どちらの 5090 を指定するべきか</span></h2>



<p>基本的には、次の方針が合理的です。</p>



<ul class="wp-block-list">
<li><strong>メインモニタが接続されている GPU（普段の UI を担当している側）を指定する</strong></li>



<li>もし OC 版と無印があり、さらに PCIe のリンク条件などが良い側が明確なら、その「条件が良い側」を指定する</li>
</ul>



<p>OpenGL は UI/ビューポートの体感にも関わるため、普段使いの滑らかさや安定性の観点では「メイン側に寄せる」判断が筋が通ります。</p>



<h2 class="wp-block-heading"><span id="toc15">これで CUDA / OptiX のレンダリングは 2 枚使えるのか</span></h2>



<p>使えます。OpenGL rendering GPU の設定は、主に <strong>OpenGL の描画担当</strong>を決める設定です。一方、Blender の CUDA / OptiX レンダリングは、Blender 側の「使用デバイス設定」で 2 枚とも有効にしていれば、基本的に両方を使います。</p>



<p>実際にタスクマネージャー上で 2 枚とも使用率が上がっている観測があるなら、「計算に使われている」という理解で問題ありません。</p>



<h2 class="wp-block-heading"><span id="toc16">グローバル固定のデメリット（起こり得ること）</span></h2>



<p>グローバル固定は運用が楽で、今回のように「Auto の揺れが原因」っぽいケースでは有効です。一方、理屈上のデメリットは次の通りです。</p>



<ul class="wp-block-list">
<li>OpenGL を使う他アプリでも、その指定 GPU に OpenGL が寄るため、用途によっては負荷が偏る可能性があります</li>



<li>ごく稀に、特定アプリが「表示している GPU と同じ GPU で OpenGL したい」前提で作られている場合、挙動が変わる可能性があります（この種の問題は一般には多くありませんが、可能性としては残ります）</li>
</ul>



<p>ただし、挙げられている主要アプリ（Premiere Pro / After Effects / Photoshop / DaVinci Resolve）は、実務上は DirectX/CUDA 側が中心で、OpenGL rendering GPU の固定が直撃するケースは多くありません。したがって、「まずグローバルで固定して安定を取る」という判断は現実的です。</p>



<p>もし将来、特定アプリだけ違和感が出た場合は、その時点で「グローバルは Auto に戻し、Blender（blender.exe）だけプログラム設定で固定する」という運用に切り替えると、影響範囲を最小化できます。</p>



<h2 class="wp-block-heading"><span id="toc17">まとめ</span></h2>



<p>今回の問題は、GPU 性能不足ではなく、<strong>デュアル GPU + 複数モニタ構成における OpenGL 担当 GPU の自動選択が不安定で、Blender の OpenGL コンテキストが破綻する瞬間があった</strong>、という整理が最も整合します。</p>



<p>DDU やドライバクリーンインストール、iGPU 無効化は「やるべき切り分け」ではありますが、決定打は <strong>NVIDIA コントロールパネルで OpenGL rendering GPU を固定</strong>することでした。これにより、Blender の UI/ビューポート（OpenGL）経路が安定し、レンダリング開始時のクラッシュが止まりました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://cgbeginner.net/blender-opengl-error/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2519</post-id>	</item>
		<item>
		<title>最強のOpenEXRビューア「cineSync Play」でBlender AgXを正確に表示する</title>
		<link>https://cgbeginner.net/openexr-viewer/</link>
					<comments>https://cgbeginner.net/openexr-viewer/#respond</comments>
		
		<dc:creator><![CDATA[CGBeginner]]></dc:creator>
		<pubDate>Wed, 12 Feb 2025 11:55:47 +0000</pubDate>
				<category><![CDATA[Blender]]></category>
		<category><![CDATA[CG]]></category>
		<guid isPermaLink="false">https://cgbeginner.net/?p=2382</guid>

					<description><![CDATA[3DCGの世界でよく使われる画像フォーマットの「OpenEXR」。32bit depthやマルチレイヤ―などに対応しており、3DCGレンダリング素材として最高の親和性を持っているフォーマットです。 ですが、それらを表示・ [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>3DCGの世界でよく使われる画像フォーマットの「OpenEXR」。32bit depthやマルチレイヤ―などに対応しており、3DCGレンダリング素材として最高の親和性を持っているフォーマットです。</p>



<p>ですが、それらを表示・再生するのは一苦労で、jpgファイルのように気軽に開くことができません。</p>



<p>とても便利なビューアーソフトを見つけたのでメモ。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-4" checked><label class="toc-title" for="toc-checkbox-4">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">cineSync Play</a><ol><li><a href="#toc2" tabindex="0">cineSync Playの設定</a></li></ol></li><li><a href="#toc3" tabindex="0">Blender AgXカラーマネジメントの再現</a><ol><li><a href="#toc4" tabindex="0">Filmic Blender とは</a></li><li><a href="#toc5" tabindex="0">Blender AgX とは</a></li><li><a href="#toc6" tabindex="0">cineSync PlayとBlenderのルックを一致させる</a></li><li><a href="#toc7" tabindex="0">完成</a></li></ol></li><li><a href="#toc8" tabindex="0">余談：DJVというEXRビューア</a><ol><ol><li><a href="#toc9" tabindex="0">さらなる余談</a></li></ol></li></ol></li><li><a href="#toc10" tabindex="0">参考サイト</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">cineSync Play</span></h2>



<p>cineSyncは、ハリウッドスタジオで使用されている、画像/映像のチームレビューに使うソフトのよう。公式サイトはこちら↓</p>




<a rel="noopener" href="https://www.backlight.co/product/cinesync" title="Cinesync: Real-time media review and approval" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img decoding="async" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Fwww.backlight.co%2Fproduct%2Fcinesync?w=160&#038;h=90" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Cinesync: Real-time media review and approval</div><div class="blogcard-snippet external-blogcard-snippet">Cinesync is the Academy Award-winning platform that enables high-resolution playback and interactive collaboration, rega...</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.backlight.co/product/cinesync" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">www.backlight.co</div></div></div></div></a>



<p>画像に線とか書き込めるので、制作した映像とかをチーム内でレビューするのを円滑にする系のプロダクトなんだと思います。これは有料の製品ですが、そのプレーヤー部分だけを切り出したものが無料ソフトとして配布されており、「cineSync Play」と呼ばれているようです。</p>



<p>下記がダウンロードリンクです。</p>




<a rel="noopener" href="https://www.backlight.co/product/cinesync/download" title="Download Cinesync for Mac, Windows, and Linux" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Fwww.backlight.co%2Fproduct%2Fcinesync%2Fdownload?w=160&#038;h=90" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Download Cinesync for Mac, Windows, and Linux</div><div class="blogcard-snippet external-blogcard-snippet">Get ready to elevate your media review experience. cineSync is free to download and install as a local player.</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.backlight.co/product/cinesync/download" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">www.backlight.co</div></div></div></div></a>



<p>MacOS(Apple Silicon), MacOS(Intel), Windows, Linux版がある様子。Windows版は、インストーラ版と、zip版がありました。私はWindows zip版をチョイス。一応、この記事執筆時の最新版の直リンクを張っておきます。</p>



<p><a href="https://download.ftrack.com/cineSyncPlay/cineSyncPlay_macOS_Apple_Silicon_5.4.6.dmg">Download cineSync Play 5.4.6 for macOS Silicon</a></p>



<p><a rel="noopener" href="https://download.ftrack.com/cineSyncPlay/cineSyncPlay_macOS_Intel_5.4.6.dmg" target="_blank">Download cineSync Play 5.4.6 for macOS Intel</a></p>



<p><a rel="noopener" href="https://download.ftrack.com/cineSyncPlay/cineSyncPlay_WinSetup_5.4.6.exe" target="_blank">Download cineSync Play 5.4.6 for Windows</a></p>



<p><a rel="noopener" href="https://download.ftrack.com/cineSyncPlay/cineSyncPlay_WinNoInstaller_5.4.6.zip" target="_blank">Download cineSync Play 5.4.6 Windows (install-free)</a></p>



<p><a rel="noopener" href="https://download.ftrack.com/cineSyncPlay/cineSyncPlay_Linux64_5.4.6.tar.gz" target="_blank">Download cineSync Play 5.4.6 for Linux</a></p>



<h3 class="wp-block-heading"><span id="toc2">cineSync Playの設定</span></h3>



<p>cineSyncPlay.exeを起動したらそのまま使えます。言語はEnglishのほかに日本語も選べました。ちょっと翻訳怪しいのでEnglishのまま使います。</p>



<p>使い方は簡単、exrファイルをそのままドラッグ＆ドロップするだけです。連番ファイルは勝手にアニメーションとして認識してくれます。再生も軽快です。もう何も説明するところがない（汗）</p>



<h2 class="wp-block-heading"><span id="toc3">Blender AgXカラーマネジメントの再現</span></h2>



<p>cineSync Playは、LUTファイルやOpenColor IO（ocio）によるカラーマネジメントにも対応していますので、3Dソフトのルックを完全に再現できます。</p>



<p>なので今回は、Blenderのカラーマネジメント「AgX（旧Filmic）」のルックを完全再現する方法をメモ。</p>



<h3 class="wp-block-heading"><span id="toc4">Filmic Blender とは</span></h3>



<p>Blenderには独自のカラーマネジメントシステムが搭載されていて、Blender2.8ごろから、「Filmic」と呼ばれる、フィルムライクでリアルなview transformが設定できるようになっています。3Dソフト内部では、光の情報は32bit空間のリニアな情報として表現、計算がされていますが、view transformによって、それをディスプレイに表示するときちゃんと写真っぽい見た目になるように変換処理がなされます。リアルなview transform設定が、filmicということです（雑説明）。</p>



<p>Filmic Blenderに関する説明は下記の動画がわかりやすいです。ただ、これは2.7時代の説明で、操作手順はかなり古い情報ですので参考にしないでください。今ではもう標準搭載されてますし、後述しますがFilmicの進化版のAgXがBlender4.0から採用されています。</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" class="youtube-player" width="1456" height="819" src="https://www.youtube.com/embed/m9AT7H4GGrA?version=3&#038;rel=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;fs=1&#038;hl=ja&#038;autohide=2&#038;wmode=transparent" allowfullscreen="true" style="border:0;" sandbox="allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox"></iframe>
</div></figure>




<a rel="noopener" href="https://github.com/sobotka/filmic-blender" title="GitHub - sobotka/filmic-blender: Film Emulsion-Like Camera Rendering Transforms for Blender" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://cgbeginner.net/wp-content/uploads/cocoon-resources/blog-card-cache/ce96d74129e69757387d9281dd558ecf." alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">GitHub - sobotka/filmic-blender: Film Emulsion-Like Camera Rendering Transforms for Blender</div><div class="blogcard-snippet external-blogcard-snippet">Film Emulsion-Like Camera Rendering Transforms for Blender - sobotka/filmic-blender</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://github.com/sobotka/filmic-blender" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">github.com</div></div></div></div></a>



<h3 class="wp-block-heading"><span id="toc5">Blender AgX とは</span></h3>



<p>前述のとおり、Filmicは改良が加えられ、「AgX」と呼ばれるようになりました。Blender4.0から標準搭載され、デフォルト設定になっています。</p>



<p>AgXについては下記を参照。</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" class="youtube-player" width="1456" height="819" src="https://www.youtube.com/embed/mbLJc4zYQhQ?version=3&#038;rel=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;fs=1&#038;hl=ja&#038;autohide=2&#038;wmode=transparent" allowfullscreen="true" style="border:0;" sandbox="allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox"></iframe>
</div></figure>




<a rel="noopener" href="https://github.com/EaryChow/AgX" title="GitHub - EaryChow/AgX: Eary&#039;s Version of AgX" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://cgbeginner.net/wp-content/uploads/cocoon-resources/blog-card-cache/4c86154f62fba996540db67aba044cfb." alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">GitHub - EaryChow/AgX: Eary's Version of AgX</div><div class="blogcard-snippet external-blogcard-snippet">Eary&#039;s Version of AgX. Contribute to EaryChow/AgX development by creating an account on GitHub.</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://github.com/EaryChow/AgX" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">github.com</div></div></div></div></a>



<p>AgXをDavinci Resolveで扱いやすくするLUTが配布されています。</p>




<a rel="noopener" href="https://cinematiccookie.gumroad.com/l/jsozlf" title="Free Blender AgX Color Space LUTs" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://cgbeginner.net/wp-content/uploads/cocoon-resources/blog-card-cache/3e44b5b66c25e48ffac654f2ca9b2954." alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Free Blender AgX Color Space LUTs</div><div class="blogcard-snippet external-blogcard-snippet">These LUTs convert the new AgX color Management renders to rec709.Find out why and how to use AgX in this Video here:</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://cinematiccookie.gumroad.com/l/jsozlf" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">cinematiccookie.gumroad.com</div></div></div></div></a>



<h3 class="wp-block-heading"><span id="toc6">cineSync PlayとBlenderのルックを一致させる</span></h3>



<p>Blenderのカラーマネジメントは、ocio（Open ColorIO）で内部的に管理されています。</p>



<p>ということでcineSync Playを開き、お好きなレンダリング済みEXRファイルを開いておきます。</p>



<p>そして「Tools→Colour Grading」をクリック。<br>「LUT&#8217;s」パネル内の「OCIO」の「Select」から、Blenderフォルダ内の下記ファイルを選択します。「blender-4.3.2-windows-x64/4.3/datafiles/colormanagement/config.ocio」</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="894" height="1024" src="https://cgbeginner.net/wp-content/uploads/2025/02/cinesyncplay_1-894x1024.png" alt="" class="wp-image-2385" srcset="https://cgbeginner.net/wp-content/uploads/2025/02/cinesyncplay_1-894x1024.png 894w, https://cgbeginner.net/wp-content/uploads/2025/02/cinesyncplay_1-262x300.png 262w, https://cgbeginner.net/wp-content/uploads/2025/02/cinesyncplay_1-768x880.png 768w, https://cgbeginner.net/wp-content/uploads/2025/02/cinesyncplay_1.png 1002w" sizes="(max-width: 894px) 100vw, 894px" /></figure>



<p>引き続き「OCIO」パネル中で<br>・Input Colour Space ＝ Linear Rec.709<br>・Look = None （Blenderで設定しているのに合わせる）<br>・Output Colour Space = AgX （Blenderで設定しているのに合わせる）<br>・Display = sRGB<br>と設定します。</p>



<p>これで、カラーはBlenderビューポート内と一致したと思います。</p>



<p>次に、bit depthの設定です。たぶん、今の状態だと白飛び/黒つぶれしているような画になっているかと思います。</p>



<p>「Edit→Preferences」をクリック</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="700" height="742" src="https://cgbeginner.net/wp-content/uploads/2025/02/cinesyncplay_2.png" alt="" class="wp-image-2386" srcset="https://cgbeginner.net/wp-content/uploads/2025/02/cinesyncplay_2.png 700w, https://cgbeginner.net/wp-content/uploads/2025/02/cinesyncplay_2-283x300.png 283w" sizes="(max-width: 700px) 100vw, 700px" /></figure>



<p>「Playback and Graphics」タブ内の、「Playback and Graphics」パネル内の、「Colour buffer precision」を「32-bit floating point」に設定。別に、「16-bit floating point」でもよいです。Blenderのレンダリング保存設定でどっちを選択してるかによります。とにかく8-bitはやめましょう。</p>



<h3 class="wp-block-heading"><span id="toc7">完成</span></h3>



<p>これで、Blenderビューポート内のレンダリング画像と、cineSync Play内のビューが一致したと思います！</p>



<h2 class="wp-block-heading"><span id="toc8">余談：DJVというEXRビューア</span></h2>



<p>もともと、EXRビューアとして「DJV」というものを使っていました。</p>




<a rel="noopener" href="https://darbyjohnston.github.io/DJV/" title="Site not found &middot; GitHub Pages" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Fdarbyjohnston.github.io%2FDJV%2F?w=160&#038;h=90" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Site not found &middot; GitHub Pages</div><div class="blogcard-snippet external-blogcard-snippet"></div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://darbyjohnston.github.io/DJV/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">darbyjohnston.github.io</div></div></div></div></a>



<p>これも高機能で軽量でよかったんですが、更新が2020年の2.0.8から進んでいないのと、ocioのサポートが、バージョン1までなので、最新のBlenderのocioを読めません。ということで、cineSync Playに乗り換えたのでした。</p>



<p>DJVについての参考記事はこちら</p>




<a rel="noopener" href="https://3dnchu.com/archives/djv-2-0-8" title="DJV 2.0.8 - 連番画像やOpenEXR(EXR)などの形式も表示可能！CG・VFX・映像関係者向け無料・オープンソースのイメージビューアー！Win&amp;Mac＆Linux" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://cgbeginner.net/wp-content/uploads/cocoon-resources/blog-card-cache/b49dc2b2d610a2a11a70d2d5e6ef7fcd.gif" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">DJV 2.0.8 - 連番画像やOpenEXR(EXR)などの形式も表示可能！CG・VFX・映像関係者向け無料・オープンソースのイメージビューアー！Win&Mac＆Linux</div><div class="blogcard-snippet external-blogcard-snippet">Darby Johnston氏によるCG・VFX・映像業界が扱う連番画像やOpenEXRなどのフォーマットを閲覧するのに特化したビューアーツール「DJV 2.0.8」！WindowsやMacOS、そしてLinuxに対応し無料＆オープンソース...</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://3dnchu.com/archives/djv-2-0-8" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">3dnchu.com</div></div></div></div></a>



<figure class="wp-block-embed is-type-rich is-provider-hatena-blog wp-block-embed-hatena-blog"><div class="wp-block-embed__wrapper">
<iframe title="djvでOpenColorIO - すあまの備忘録" src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fgodofsuama.hatenablog.com%2Fentry%2F2020%2F07%2F02%2F100000" class="embed-card embed-blogcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;"></iframe>
</div></figure>



<p>DJVでBlenderのルックを再現する設定が詳しく解説されています。ただし、最新のBlenderではうまくいきません。</p>




<a rel="noopener" href="https://vook.vc/n/6779" title="気軽なOpenEXRワークフロー！　DaVinci Resolve、After Effectsとの連携｜Blenderライフハック Vol.9" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://cgbeginner.net/wp-content/uploads/cocoon-resources/blog-card-cache/b4fd387f331b30be56ad6221c62532cf.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">気軽なOpenEXRワークフロー！　DaVinci Resolve、After Effectsとの連携｜Blenderライフハック Vol.9</div><div class="blogcard-snippet external-blogcard-snippet">CGアーティストのTaka Tachibanaです。 Blenderのあらゆる効率化TIPSをお届けしている【Blenderライフハック】。第9回目となる今回は、「気軽なOpenEXRワークフロ...</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://vook.vc/n/6779" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">vook.vc</div></div></div></div></a>



<h4 class="wp-block-heading"><span id="toc9">さらなる余談</span></h4>



<p>DJVは更新に難航している様子…OCIOv2のサポートもだいぶ先になりそうな感じなのが、下記GitHubページから読み取れます。</p>




<a rel="noopener" href="https://github.com/darbyjohnston/DJV/pull/468" title="Trying out OCIO v2 by miabrahams ﾂｷ Pull Request #468 ﾂｷ grizzlypeak3d/DJV" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://cgbeginner.net/wp-content/uploads/cocoon-resources/blog-card-cache/9d19d86108febc5db12d13f84e48cb1d." alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Trying out OCIO v2 by miabrahams ﾂｷ Pull Request #468 ﾂｷ grizzlypeak3d/DJV</div><div class="blogcard-snippet external-blogcard-snippet">Hello! I was curious to see whether DJV could be upgraded to OCIO v2. I was able to successfully get it to build on my m...</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://github.com/darbyjohnston/DJV/pull/468" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">github.com</div></div></div></div></a>



<p>tlRenderというものを一から作っている様子。よくわかってませんが…</p>




<a rel="noopener" href="https://github.com/darbyjohnston/tlRender" title="GitHub - grizzlypeak3d/tlRender: tlRender is an open source library for building playback and review applications for visual effects, film, and animation." class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://cgbeginner.net/wp-content/uploads/cocoon-resources/blog-card-cache/081cf97f24f59fda37b700e0de1a8a9a." alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">GitHub - grizzlypeak3d/tlRender: tlRender is an open source library for building playback and review applications for visual effects, film, and animation.</div><div class="blogcard-snippet external-blogcard-snippet">tlRender is an open source library for building playback and review applications for visual effects, film, and animation...</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://github.com/darbyjohnston/tlRender" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">github.com</div></div></div></div></a>



<h2 class="wp-block-heading"><span id="toc10">参考サイト</span></h2>



<p>海外ニキたちが、私と同じ問題にぶつかって解決している記事です。ちょっと足らない記載とかあったので、私がこの記事を書いた、という裏事情があります。</p>




<a rel="noopener" href="https://www.reddit.com/r/blender/comments/18s48po/agx_in_davinci_resolve" title="Blocked" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Fwww.reddit.com%2Fr%2Fblender%2Fcomments%2F18s48po%2Fagx_in_davinci_resolve?w=160&#038;h=90" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Blocked</div><div class="blogcard-snippet external-blogcard-snippet"></div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.reddit.com/r/blender/comments/18s48po/agx_in_davinci_resolve" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">www.reddit.com</div></div></div></div></a>




<a rel="noopener" href="https://www.reddit.com/r/blender/comments/1di8h61/blender_41_ocio_for_djv_github_agx_too_dark" title="Blocked" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Fwww.reddit.com%2Fr%2Fblender%2Fcomments%2F1di8h61%2Fblender_41_ocio_for_djv_github_agx_too_dark?w=160&#038;h=90" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Blocked</div><div class="blogcard-snippet external-blogcard-snippet"></div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.reddit.com/r/blender/comments/1di8h61/blender_41_ocio_for_djv_github_agx_too_dark" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">www.reddit.com</div></div></div></div></a>




<a rel="noopener" href="https://www.reddit.com/r/vfx/comments/1g2thqz/any_cinesync_play_users_here_color_banding_issue" title="Blocked" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Fwww.reddit.com%2Fr%2Fvfx%2Fcomments%2F1g2thqz%2Fany_cinesync_play_users_here_color_banding_issue?w=160&#038;h=90" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Blocked</div><div class="blogcard-snippet external-blogcard-snippet"></div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.reddit.com/r/vfx/comments/1g2thqz/any_cinesync_play_users_here_color_banding_issue" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">www.reddit.com</div></div></div></div></a>



<p>下記の1:31:08あたりから、cineSync Playの紹介があります。</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Mograph and Lighting stream in Blender" width="1456" height="819" src="https://www.youtube.com/embed/h9WKsqDKj90?start=5468&#038;feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p>下記はEXRワークフローで参考になる動画。</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" class="youtube-player" width="1456" height="819" src="https://www.youtube.com/embed/-UjJqwwMJc8?version=3&#038;rel=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;fs=1&#038;hl=ja&#038;autohide=2&#038;wmode=transparent" allowfullscreen="true" style="border:0;" sandbox="allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox"></iframe>
</div></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://cgbeginner.net/openexr-viewer/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2382</post-id>	</item>
		<item>
		<title>BlenderのUIカラーの意味</title>
		<link>https://cgbeginner.net/blender-ui-color/</link>
					<comments>https://cgbeginner.net/blender-ui-color/#respond</comments>
		
		<dc:creator><![CDATA[CGBeginner]]></dc:creator>
		<pubDate>Sun, 02 Jun 2024 17:00:33 +0000</pubDate>
				<category><![CDATA[Blender]]></category>
		<guid isPermaLink="false">https://cgbeginner.net/?p=2197</guid>

					<description><![CDATA[3DソフトBlenderのUIで、キーフレームやドライバーなどを適用すると色が変わるようになっていますが、何色がどういう意味なのかが案外分からないのでメモ What do various property highlig [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>3DソフトBlenderのUIで、キーフレームやドライバーなどを適用すると色が変わるようになっていますが、何色がどういう意味なのかが案外分からないのでメモ</p>




<a rel="noopener" href="https://blender.stackexchange.com/questions/190761/what-do-various-property-highlight-color-overlays-mean" title="What do various property highlight color overlays mean?" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://cgbeginner.net/wp-content/uploads/cocoon-resources/blog-card-cache/01e878018f538c9f11ff4aaf4e2f00c5.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">What do various property highlight color overlays mean?</div><div class="blogcard-snippet external-blogcard-snippet">I have downloaded a free model for my current project and spotted those different colors on Scale, Rotation, Location, a...</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://blender.stackexchange.com/questions/190761/what-do-various-property-highlight-color-overlays-mean" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">blender.stackexchange.com</div></div></div></div></a>




https://i.sstatic.net/kteph.png




<p><br>グレー/テーマカラー &#8211; 変更なし、静的、非アニメーション値<br>緑 &#8211; プロパティはアニメートされるが、現在のフレームではキーフレームされない（右側の菱形の輪郭デコレータに注目。）<br>黄色 &#8211; プロパティはアニメーション化され、現在のフレームでキーフレーム化される（右側の塗りつぶされた菱形のデコレーターに注目）。<br>オレンジ &#8211; プロパティはアニメーションしているが、値が変更され、現フレームの評価/キーフレームされたアニメーションと一致しなくなった。これは、プロパティを変更したが、まだ新しい値をキーフレーム化していない場合に発生します。新しいキーフレームが挿入されていない場合、ファイルに保存されているキーフレーム化/評価済みの値にジャンプバックし、データ損失の可能性があります。レンダリングにも、現在UIに表示されている状態ではなく、保存された状態が反映されます。より強いオレンジ色は、保存されていない状態をユーザーに警告するはずです。<br>Teal/Blue &#8211; プロパティはオーバーライドされます。これは、ライブラリ、または他の外部ブレンドファイルからリンクされたデータの場合のみです。リモート・ライブラリに保存されている定義済みのデフォルト値とは異なり、ローカルで設定された新しいデータがオーバーライドされていることを意味します（右側のoverridden矢印デコレータに注目）。<br>紫 &#8211; プロパティは、他のプロパティ/オブジェクトから計算された 入力に応じて値を自動的に制御するドライバ、式、または単純な数学関数 を持ちます（右側の駆動矢印デコレータに注目）。<br>赤 &#8211; エラー状態（モディファイアやコンストレインでよく使われる）。このプロパティは無効な値を持っているか、無効になっているか、あるいは目に見える効果を出していません。下の例では、Subdivisionモディファイアは、ビューポートとレンダリング出力の両方でゼロのサブディビジョンを持っています。有害なエラーが発生していないにもかかわらず、その名前は赤く表示され、現在無効な出力であることを警告しています。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://cgbeginner.net/blender-ui-color/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2197</post-id>	</item>
		<item>
		<title>Flip FluidsとOcean Modifierの連携【Blender】</title>
		<link>https://cgbeginner.net/flip-fluids-ocean-modifier/</link>
					<comments>https://cgbeginner.net/flip-fluids-ocean-modifier/#respond</comments>
		
		<dc:creator><![CDATA[CGBeginner]]></dc:creator>
		<pubDate>Sun, 26 May 2024 07:22:22 +0000</pubDate>
				<category><![CDATA[Blender]]></category>
		<category><![CDATA[CG]]></category>
		<guid isPermaLink="false">https://cgbeginner.net/?p=2174</guid>

					<description><![CDATA[液体のシミュレーションに特化したBlenderアドオンのFlip Fluidsと、Blenderに備わっているOceanモディファイヤで生成できる海シミュレーションの連携方法のメモ記事です。 ※自分のメモ用なので、雑です [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>液体のシミュレーションに特化したBlenderアドオンのFlip Fluidsと、Blenderに備わっているOceanモディファイヤで生成できる海シミュレーションの連携方法のメモ記事です。</p>



<p>※自分のメモ用なので、雑ですが許してください。<span class="red">（現在作成中）</span></p>



<p>とりあえず自分で作ってみてXに上げています</p>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<div class="embed-twitter"><blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="ja" dir="ltr">水シミュレーション練習4<br>water simulation test<a href="https://twitter.com/hashtag/blender3d?src=hash&amp;ref_src=twsrc%5Etfw">#blender3d</a> <a href="https://twitter.com/hashtag/b3d?src=hash&amp;ref_src=twsrc%5Etfw">#b3d</a> <a href="https://twitter.com/hashtag/FLIPFluids?src=hash&amp;ref_src=twsrc%5Etfw">#FLIPFluids</a> <a href="https://t.co/qX59EjS2oe">pic.twitter.com/qX59EjS2oe</a></p>&mdash; たてはま / CGBeginner @趣味独学映像クリエイター (@cgbeginner) <a href="https://twitter.com/cgbeginner/status/1796171858720518511?ref_src=twsrc%5Etfw">May 30, 2024</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script></div>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<div class="embed-twitter"><blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">Hi <a href="https://twitter.com/FlipFluids?ref_src=twsrc%5Etfw">@FlipFluids</a> !<br>I made a test video using FlipFluids!<br>Thank you for this great add-on.<br><br>However, I think I may have found a bug.<br>I&#39;m using the motion blur feature of the geometry nodes included in the add-on for the whitewater spray particles, but the motion blur for the… <a href="https://t.co/gVX9G2APyW">pic.twitter.com/gVX9G2APyW</a></p>&mdash; たてはま / CGBeginner @趣味独学映像クリエイター (@cgbeginner) <a href="https://twitter.com/cgbeginner/status/1796211663223583173?ref_src=twsrc%5Etfw">May 30, 2024</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script></div>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<div class="embed-twitter"><blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="ja" dir="ltr">某インターステラー風<br>流体シミュレーション<a href="https://twitter.com/hashtag/3DCG?src=hash&amp;ref_src=twsrc%5Etfw">#3DCG</a> <a href="https://twitter.com/hashtag/b3d?src=hash&amp;ref_src=twsrc%5Etfw">#b3d</a> <a href="https://twitter.com/hashtag/FLIPFluids?src=hash&amp;ref_src=twsrc%5Etfw">#FLIPFluids</a> <a href="https://twitter.com/hashtag/FLIPFluidsaddon?src=hash&amp;ref_src=twsrc%5Etfw">#FLIPFluidsaddon</a> <a href="https://t.co/vySid0C7ol">pic.twitter.com/vySid0C7ol</a></p>&mdash; たてはま / CGBeginner @趣味独学映像クリエイター (@cgbeginner) <a href="https://twitter.com/cgbeginner/status/1822247688215076964?ref_src=twsrc%5Etfw">August 10, 2024</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script></div>
</div></figure>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-8" checked><label class="toc-title" for="toc-checkbox-8">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">Flip FluidsとOcean Modifier</a></li><li><a href="#toc2" tabindex="0">Oceanモディファイヤの設定</a></li><li><a href="#toc3" tabindex="0">Oceanモディファイヤをループ対応に</a></li><li><a href="#toc4" tabindex="0">Oceanモディファイヤ無しのプロシージャルシェーダーで海表現</a></li><li><a href="#toc5" tabindex="0">参考資料1 </a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">Flip FluidsとOcean Modifier</span></h2>



<p>Flip Fluids公式サイト</p>




<a rel="noopener" href="https://flipfluids.com" title="FLIP Fluids Addon for Blender &#8211; FLIP Fluids Addon For Blender" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Fflipfluids.com?w=160&#038;h=90" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">FLIP Fluids Addon for Blender &#8211; FLIP Fluids Addon For Blender</div><div class="blogcard-snippet external-blogcard-snippet"></div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://flipfluids.com" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">flipfluids.com</div></div></div></div></a>



<p>Blender Market</p>




<a rel="noopener" href="https://blendermarket.com/products/flipfluids" title="https://blendermarket.com/products/flipfluids" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Fblendermarket.com%2Fproducts%2Fflipfluids?w=160&#038;h=90" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">https://blendermarket.com/products/flipfluids</div><div class="blogcard-snippet external-blogcard-snippet"></div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://blendermarket.com/products/flipfluids" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">blendermarket.com</div></div></div></div></a>



<p>Ocean Modifierドキュメント</p>




<a rel="noopener" href="https://docs.blender.org/manual/ja/latest/modeling/modifiers/physics/ocean.html" title="Ocean(&#28023;&#27915;)&#12514;&#12487;&#12451;&#12501;&#12449;&#12452;&#12450;&#12540; - Blender 5.0 Manual" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Fdocs.blender.org%2Fmanual%2Fja%2Flatest%2Fmodeling%2Fmodifiers%2Fphysics%2Focean.html?w=160&#038;h=90" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Ocean(&#28023;&#27915;)&#12514;&#12487;&#12451;&#12501;&#12449;&#12452;&#12450;&#12540; - Blender 5.0 Manual</div><div class="blogcard-snippet external-blogcard-snippet"></div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://docs.blender.org/manual/ja/latest/modeling/modifiers/physics/ocean.html" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">docs.blender.org</div></div></div></div></a>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>これは、オープンソースの&nbsp;<a href="https://code.google.com/archive/p/houdini-ocean-toolkit/">Houdini Ocean Toolkit</a>&nbsp;からの移植です。</p>
<cite><a href="https://docs.blender.org/manual/ja/latest/modeling/modifiers/physics/ocean.html">https://docs.blender.org/manual/ja/latest/modeling/modifiers/physics/ocean.html</a></cite></blockquote>



<p>この機能Houdiniからパクってきた機能なのか…（オープンソースありがたし）</p>



<h2 class="wp-block-heading"><span id="toc2">Oceanモディファイヤの設定</span></h2>



<p>適当なPlaneにOceanモディファイヤを適用すると海っぽいものが出来上がる。Resolutionは32とか64にする。実際のDisplaceマップは、Resolutionの2乗になるので、64なら4096&#215;4096ピクセルのDisplaceマップが内部で生成される。Bake機能で、そのマップをEXRで書き出せる。Foamオプションをつけると、泡のマップも書き出す。Coverageは-1くらいがちょうどいい。</p>



<p>Timeパラメータが時間発展なので、これにキーを打ち、Linear Extrapolationに設定して無限に発展していくようにするとよい。</p>



<p>Graph Editorウィンドウの下にあるメニューから「Channel」⇒「Extrapolation Mode」⇒「Linear Extrapolation」で設定可能。</p>



<p>下記動画のチュートリアルが参考になる。両方ともほぼ同じ手法。Oceanモディファイヤ平面を2パターン用意して、一つは大きなうねり用（Swell）、もう一つは詳細用（Detail）で作り、それらをBakeした後に別の平面にそれらを適用する流れ。</p>



<p>平面は、巨大な円ポリゴンだが、個人的には三角ポリゴンを密集させて極みたいにすると、テクスチャが破綻すると思うので、Add Circle→Fill Type: NothingでFillなしサークルを作ったのち、EditモードでFace→Grid Fillすることで四角ポリゴンで円を作れる。あとはSubdivision Surfaceで細かくする。</p>



<p>円の作り方(1:04付近)</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" class="youtube-player" width="1456" height="819" src="https://www.youtube.com/embed/BALUntQqh-0?version=3&#038;rel=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;fs=1&#038;hl=ja&#038;autohide=2&#038;start=62&#038;wmode=transparent" allowfullscreen="true" style="border:0;" sandbox="allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox"></iframe>
</div></figure>



<p>円ポリに、BakeしたDisplaceマップを適用したマテリアルをあてる。その際、Adaptive Subdivisionという機能（カメラに近い部分ほど細かくSubdivideする）を有効にする。こういう機能ゲームとかでよくあるよね。UE5のNanite的な？ただしこの機能はExperimental Featureなので、レンダーパネルでExperimental Featureをオンにしないと使えない。(追記：Blender5.0ではExperimentalは外れて正式実装されてました）</p>



<p>Oceanモディファイヤの使い方は下記のチュートリアルが参考になる</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" class="youtube-player" width="1456" height="819" src="https://www.youtube.com/embed/YZPUCciH_yc?version=3&#038;rel=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;fs=1&#038;hl=ja&#038;autohide=2&#038;wmode=transparent" allowfullscreen="true" style="border:0;" sandbox="allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox"></iframe>
</div></figure>



<p>泡（Foam）つきのチュートリアルは以下が参考になる</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" class="youtube-player" width="1456" height="819" src="https://www.youtube.com/embed/n8PSS5HqC-Q?version=3&#038;rel=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;fs=1&#038;hl=ja&#038;autohide=2&#038;wmode=transparent" allowfullscreen="true" style="border:0;" sandbox="allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox"></iframe>
</div></figure>



<h2 class="wp-block-heading"><span id="toc3">Oceanモディファイヤをループ対応に</span></h2>



<p>Oceanモディファイヤのベイクファイルをループ対応にするTips</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" class="youtube-player" width="1456" height="819" src="https://www.youtube.com/embed/p03fspwMY64?version=3&#038;rel=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;fs=1&#038;hl=ja&#038;autohide=2&#038;wmode=transparent" allowfullscreen="true" style="border:0;" sandbox="allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox"></iframe>
</div></figure>



<h2 class="wp-block-heading"><span id="toc4">Oceanモディファイヤ無しのプロシージャルシェーダーで海表現</span></h2>



<p>上記動画に関連して、Oceanモディファイヤ無しでプロシージャルシェーダーで海を再現した人もいました。</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" class="youtube-player" width="1456" height="819" src="https://www.youtube.com/embed/2ReHnWlMDuo?version=3&#038;rel=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;fs=1&#038;hl=ja&#038;autohide=2&#038;wmode=transparent" allowfullscreen="true" style="border:0;" sandbox="allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox"></iframe>
</div></figure>



<h2 class="wp-block-heading"><span id="toc5">参考資料1 </span></h2>



<p>ArchiCraig CAD氏のチャンネルでの作例</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" class="youtube-player" width="1456" height="819" src="https://www.youtube.com/embed/RLDFO4x5iHU?version=3&#038;rel=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;fs=1&#038;hl=ja&#038;autohide=2&#038;wmode=transparent" allowfullscreen="true" style="border:0;" sandbox="allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox"></iframe>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<div class="embed-twitter"><blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">Displacement image are generated by the ocean modifier. The ocean plane and the flip surface are displaced by the same images.<br><br>I&#39;ve done a post with screenshot summarizing the shader &amp; geometry nodes and modifiers in the blender artist flipfluid thread : <a href="https://t.co/Yi92QAF4D2">https://t.co/Yi92QAF4D2</a></p>&mdash; ArchiCraig (@ArchiCraigCAD) <a href="https://twitter.com/ArchiCraigCAD/status/1595138691584122880?ref_src=twsrc%5Etfw">November 22, 2022</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script></div>
</div></figure>



<p>Oceanモディファイヤが適用されたPlaneとFlip Surfaceに同じDisplaceを適用することでミックスする。</p>




<a rel="noopener" href="https://blenderartists.org/t/flip-fluids-addon-a-liquid-fluid-simulation-tool-for-blender/702503/1272" title="FLIP Fluids Addon: A liquid fluid simulation tool for Blender" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://cgbeginner.net/wp-content/uploads/cocoon-resources/blog-card-cache/aedc51b6b11f8c71cd6fe0db0b535b16.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">FLIP Fluids Addon: A liquid fluid simulation tool for Blender</div><div class="blogcard-snippet external-blogcard-snippet">Hey Olof, Sorry for the delay, There it is ;</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://blenderartists.org/t/flip-fluids-addon-a-liquid-fluid-simulation-tool-for-blender/702503/1272" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">blenderartists.org</div></div></div></div></a>



<p>BlenderArtistsにノード情報が投稿されている。消えたら困るのでこちらに転載する（確信犯）。機械翻訳つき</p>



<p>Ocean Shader Node<br>The 2 generated ocean displacement are masked by a noise texture to try to eliminate the tiles repetitions. The noise texture location is animated and scaled uniformely to mimic wind direction influence.</p>



<p>海洋シェーダー ノード<br>生成された 2 つの海洋変位は、タイルの繰り返しを排除するためにノイズ テクスチャによってマスクされます。ノイズ テクスチャの位置は、風向の影響を模倣するために均一にアニメーション化され、スケーリングされます。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="662" src="https://cgbeginner.net/wp-content/uploads/2024/05/Ocean-Plane-_-Node-1024x662.jpg" alt="" class="wp-image-2176" srcset="https://cgbeginner.net/wp-content/uploads/2024/05/Ocean-Plane-_-Node-1024x662.jpg 1024w, https://cgbeginner.net/wp-content/uploads/2024/05/Ocean-Plane-_-Node-300x194.jpg 300w, https://cgbeginner.net/wp-content/uploads/2024/05/Ocean-Plane-_-Node-768x497.jpg 768w, https://cgbeginner.net/wp-content/uploads/2024/05/Ocean-Plane-_-Node-1536x994.jpg 1536w, https://cgbeginner.net/wp-content/uploads/2024/05/Ocean-Plane-_-Node.jpg 1965w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Ocean Plane Modifier stack<br>Need to be using experimental cycle render to be able to use the adaptive subdivision option. See ocean youtube video of dylan neil for more in depth information. <a href="https://www.youtube.com/watch?v=n8PSS5HqC-Q">Youtube &#8211; Dylan Neil </a></p>



<p>海洋平面モディファイア スタック<br>アダプティブ サブディビジョン オプションを使用するには、実験的なサイクル レンダリングを使用する必要があります。詳細については、Dylan Neil の海洋 YouTube ビデオを参照してください。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="645" height="813" src="https://cgbeginner.net/wp-content/uploads/2024/05/Ocean-plane_Modifier-Stack.png" alt="" class="wp-image-2177" srcset="https://cgbeginner.net/wp-content/uploads/2024/05/Ocean-plane_Modifier-Stack.png 645w, https://cgbeginner.net/wp-content/uploads/2024/05/Ocean-plane_Modifier-Stack-238x300.png 238w" sizes="(max-width: 645px) 100vw, 645px" /></figure>



<p>Flip Surface info<br>Flip surface shader node (enlarged screen shot below) :<br>The node tree is similar to the ocean shader , only exception , the feather edge mask nodes and the speed attribute node that change transmission/ss scattering color.</p>



<p>フリップサーフェス情報<br>フリップ サーフェス シェーダ ノード(下の拡大スクリーンショット):<br>ノード ツリーは海洋シェーダに似ていますが、フェザー エッジ マスク ノードと、透過/ss 散乱色を変更する速度属性ノードのみが例外です。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="985" height="1024" src="https://cgbeginner.net/wp-content/uploads/2024/05/Flip_Surface_Node_Combined-985x1024.jpg" alt="" class="wp-image-2178" srcset="https://cgbeginner.net/wp-content/uploads/2024/05/Flip_Surface_Node_Combined-985x1024.jpg 985w, https://cgbeginner.net/wp-content/uploads/2024/05/Flip_Surface_Node_Combined-289x300.jpg 289w, https://cgbeginner.net/wp-content/uploads/2024/05/Flip_Surface_Node_Combined-768x799.jpg 768w, https://cgbeginner.net/wp-content/uploads/2024/05/Flip_Surface_Node_Combined.jpg 1055w" sizes="(max-width: 985px) 100vw, 985px" /></figure>



<p>Zoom (Flip surface shader node)<br>the Opacity of the fluid is greater when the speed is greater. It does mimic foamy water at high speed area. I think that vorticity would make more sense in this case (to be tested).</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="680" src="https://cgbeginner.net/wp-content/uploads/2024/05/Flip_Surface_Node_01-1024x680.jpg" alt="" class="wp-image-2179" srcset="https://cgbeginner.net/wp-content/uploads/2024/05/Flip_Surface_Node_01-1024x680.jpg 1024w, https://cgbeginner.net/wp-content/uploads/2024/05/Flip_Surface_Node_01-300x199.jpg 300w, https://cgbeginner.net/wp-content/uploads/2024/05/Flip_Surface_Node_01-768x510.jpg 768w, https://cgbeginner.net/wp-content/uploads/2024/05/Flip_Surface_Node_01-1536x1019.jpg 1536w, https://cgbeginner.net/wp-content/uploads/2024/05/Flip_Surface_Node_01.jpg 1674w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Zoom (Flip surface shader node)<br>Same as the ocean displacement</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="593" src="https://cgbeginner.net/wp-content/uploads/2024/05/Flip_Surface_Node_02-1024x593.jpg" alt="" class="wp-image-2180" srcset="https://cgbeginner.net/wp-content/uploads/2024/05/Flip_Surface_Node_02-1024x593.jpg 1024w, https://cgbeginner.net/wp-content/uploads/2024/05/Flip_Surface_Node_02-300x174.jpg 300w, https://cgbeginner.net/wp-content/uploads/2024/05/Flip_Surface_Node_02-768x445.jpg 768w, https://cgbeginner.net/wp-content/uploads/2024/05/Flip_Surface_Node_02-1536x890.jpg 1536w, https://cgbeginner.net/wp-content/uploads/2024/05/Flip_Surface_Node_02-120x68.jpg 120w, https://cgbeginner.net/wp-content/uploads/2024/05/Flip_Surface_Node_02.jpg 1924w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Flip Surface modifier stack<br>I do not use adaptive subdivision on the Flip surface , as seen on the ocean modifiers. Adaptive subdivision doesnt support custom vertex attributes yet (e.g. speed)<a href="https://developer.blender.org/T92622"> T92622</a>. Notes that, it does eat a ton of ram using it on high polycount mesh ( like the surface generated by Flip). To keep the displacement detail constant between the ocean and the flip surface, i need to add some subdivision to it. Make sure the subdivision is at the bottom on the stack, it greatly improve render speed (as of blender 3.1, Optix &amp; Cuda only).</p>



<p>Regarding the Lattice modifier, refer to this <a href="https://twitter.com/FrancisJasmin2/status/1443476078752944138">Twitter &#8211; Francis Jasmin </a></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="642" height="890" src="https://cgbeginner.net/wp-content/uploads/2024/05/Flip_Surface_Modifiers-Stack.png" alt="" class="wp-image-2181" srcset="https://cgbeginner.net/wp-content/uploads/2024/05/Flip_Surface_Modifiers-Stack.png 642w, https://cgbeginner.net/wp-content/uploads/2024/05/Flip_Surface_Modifiers-Stack-216x300.png 216w" sizes="(max-width: 642px) 100vw, 642px" /></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">

<a rel="noopener" href="https://twitter.com/FrancisJasmin2/status/1443476078752944138" title="https://twitter.com/FrancisJasmin2/status/1443476078752944138" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Ftwitter.com%2FFrancisJasmin2%2Fstatus%2F1443476078752944138?w=160&#038;h=90" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">https://twitter.com/FrancisJasmin2/status/1443476078752944138</div><div class="blogcard-snippet external-blogcard-snippet"></div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://twitter.com/FrancisJasmin2/status/1443476078752944138" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">twitter.com</div></div></div></div></a>
</div></figure>



<p>White Water Geometry node<br>The white water is displaced by the same displacement map combination as the ocean &amp; Flip surface. it is only a conversion of the shader node displacement to geometry nodes displacement.</p>



<p>ホワイト ウォーター ジオメトリ ノード<br>ホワイト ウォーターは、海洋とフリップ サーフェスと同じディスプレイスメント マップの組み合わせによってディスプレイスメントされます。これは、シェーダ ノード ディスプレイスメントをジオメトリ ノード ディスプレイスメントに変換するだけです。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="434" src="https://cgbeginner.net/wp-content/uploads/2024/05/Flip_Foam_GEO-Nodes-1024x434.jpg" alt="" class="wp-image-2182" srcset="https://cgbeginner.net/wp-content/uploads/2024/05/Flip_Foam_GEO-Nodes-1024x434.jpg 1024w, https://cgbeginner.net/wp-content/uploads/2024/05/Flip_Foam_GEO-Nodes-300x127.jpg 300w, https://cgbeginner.net/wp-content/uploads/2024/05/Flip_Foam_GEO-Nodes-768x325.jpg 768w, https://cgbeginner.net/wp-content/uploads/2024/05/Flip_Foam_GEO-Nodes-1536x651.jpg 1536w, https://cgbeginner.net/wp-content/uploads/2024/05/Flip_Foam_GEO-Nodes-2048x868.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://cgbeginner.net/flip-fluids-ocean-modifier/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2174</post-id>	</item>
		<item>
		<title>Blenderのコマンドラインレンダリング</title>
		<link>https://cgbeginner.net/blender-commandline-rendering/</link>
					<comments>https://cgbeginner.net/blender-commandline-rendering/#respond</comments>
		
		<dc:creator><![CDATA[CGBeginner]]></dc:creator>
		<pubDate>Mon, 02 Dec 2019 16:55:53 +0000</pubDate>
				<category><![CDATA[Blender]]></category>
		<category><![CDATA[CG]]></category>
		<guid isPermaLink="false">https://cgbeginner.net/?p=1731</guid>

					<description><![CDATA[Blenderは、実はコマンドラインでも動かすことができます。レンダリング命令もできるので、簡易ネットワークレンダリングやバッチレンダリングにぴったりです。 目次 コマンドの例オプションの解説オプション指定の注意点自動レ [&#8230;]]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image aligncenter size-large"><img loading="lazy" decoding="async" width="600" height="335" src="https://cgbeginner.net/wp-content/uploads/2019/02/blender.png" alt="" class="wp-image-1265" srcset="https://cgbeginner.net/wp-content/uploads/2019/02/blender.png 600w, https://cgbeginner.net/wp-content/uploads/2019/02/blender-300x168.png 300w, https://cgbeginner.net/wp-content/uploads/2019/02/blender-120x68.png 120w, https://cgbeginner.net/wp-content/uploads/2019/02/blender-160x90.png 160w, https://cgbeginner.net/wp-content/uploads/2019/02/blender-320x180.png 320w" sizes="(max-width: 600px) 100vw, 600px" /></figure>



<p>Blenderは、実はコマンドラインでも動かすことができます。レンダリング命令もできるので、簡易ネットワークレンダリングやバッチレンダリングにぴったりです。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-10" checked><label class="toc-title" for="toc-checkbox-10">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">コマンドの例</a></li><li><a href="#toc2" tabindex="0">オプションの解説</a></li><li><a href="#toc3" tabindex="0">オプション指定の注意点</a><ol><li><a href="#toc4" tabindex="0">自動レンダリングWindowsバッチファイル</a></li><li><a href="#toc5" tabindex="0">自動レンダリングシェルスクリプト(Bash)</a></li></ol></li><li><a href="#toc6" tabindex="0">Pythonスクリプトを用いた高度な指定（GPU指定レンダリング）</a></li><li><a href="#toc7" tabindex="0">逆順からレンダリング</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">コマンドの例</span></h2>



<p>コマンドはこのような感じになります。Windows, Linuxどちらも共通です。</p>



<pre class="wp-block-code bash"><code>blender --background -noaudio test.blend --threads 0 --render-output //anim --render-anim</code></pre>



<p>※BlenderへのPATHが通っている前提の記載です。（PATHが通っていない場合は、上記の「blender」とある部分を、C:\Program Files～～などから始まる絶対パスで記述すればOKです）</p>



<h2 class="wp-block-heading"><span id="toc2">オプションの解説</span></h2>



<p>よく使うもののみを紹介します。すべてのオプションは、公式マニュアルにあるのでそちらを御覧ください。基本的に、指定しなかったオプションについては、保存されているblendファイルや、Preferenceの設定がそのまま使われます。</p>




<a rel="noopener" href="https://docs.blender.org/manual/en/latest/advanced/command_line/arguments.html" title="Command Line Arguments - Blender 5.0 Manual" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Fdocs.blender.org%2Fmanual%2Fen%2Flatest%2Fadvanced%2Fcommand_line%2Farguments.html?w=160&#038;h=90" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Command Line Arguments - Blender 5.0 Manual</div><div class="blogcard-snippet external-blogcard-snippet"></div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://docs.blender.org/manual/en/latest/advanced/command_line/arguments.html" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">docs.blender.org</div></div></div></div></a>



<p><strong><code>-b</code> もしくは <code>--background</code></strong><br>バックグラウンド実行（GUIを表示しない）。コマンドラインレンダリングの際は通常これにする。</p>



<p><strong><code>-noaudio</code></strong><br>オーディオシステムを使わない（GUIを起動していないLinuxなどはこれを追記する）。</p>



<p><strong><code>-t</code> もしくは <code>--threads</code> &lt;スレッド数&gt;</strong><br>レンダリングに使うCPUスレッド数。0を指定すると、すべての論理スレッドを使う。（8コア16スレッドCPUを使っているとしたら、16になる。）これは無くてもいいが、blendファイルで少なく指定している場合にオーバーライドするために使う。</p>



<p><span class="red">※マルチGPU構成等の場合、使用GPUを指定したかったりするかもしれませんが、これについては、コマンドライン引数では指定できません。そのかわり、Pythonスクリプトを使うことで実現可能です（後述）。</span></p>



<p><strong><code>-o</code> もしくは <code>--render-output</code> &lt;アウトプットのパス+ファイル名&gt;</strong><br>出力先。指定しない場合は、blendファイルの情報が使用される。<br>・<code>//</code> がblendファイルの場所基準の相対パス。<br>・アニメーションの場合、末尾に0000.pngや0000.exrがつく。<br>したがって、たとえば <code>//render/out</code> とすると、<code>(blendファイルの場所)/render/out0000.exr</code> 、 <code>(blendファイルの場所)/render/out0001.exr</code> 、といった形でファイルが保存されていく。<br>・#記号を使うことで、その部分を連番扱いにすることも可能。<br><code>//render/animation_##_test</code>とすると、<code>animation_01_test.png</code> のように名前がつけられる。#の数がそのままゼロ埋めの桁数になる。</p>



<p><strong><code>-a</code> もしくは <code>--render-anim</code></strong><br>アニメーションレンダリング。blendファイルで定義されたフレームのレンダリングを順番にすべて行う。</p>



<p><strong><code>-f</code> もしくは <code>--render-frame</code> &lt;フレーム番号&gt;</strong><br>特定のフレームのみレンダリング。とびとびの値や、連続フレームなどが柔軟に指定できる。<br>・複数のフレームを指定するときは、コンマで区切る。<br>例 : <code>--render-frame 1,4,10,20</code><br>・あるフレームからあるフレームの間を指定するときは、「..」を使う。<br>例 : <code>--render-frame 5..10</code><br>・上2つを組み合わせた表記も可能。<br>例 : <code>--render-frame 1,5,10..20,30..40,55,60</code><br>・スペースなどを含めないこと(引数の切れ目として認識されてしまう)。</p>



<h2 class="wp-block-heading"><span id="toc3">オプション指定の注意点</span></h2>



<p>以上の<span class="red">オプションを書く順番は、ある程度決まっています（これ重要）。</span>ルールは、</p>



<pre class="wp-block-code"><code>blender &#91;引数を取らないオプション] &#91;blendファイル] &#91;引数をとるオプション] &#91;フレーム指定オプション]</code></pre>



<p>となります。</p>



<p><strong>[引数を取らないオプション] </strong><br><code>-b</code>(<code>--background</code>)や、<code>-noaudio</code>など。blenderの起動方法に関わる部分。</p>



<p><strong>[blendファイル] </strong><br>blendファイルの場所を指定する。</p>



<p><strong>[引数をとるオプション] </strong><br>上の例では<code>-t</code>(<code>--threads</code>)や<code>-o</code>(<code>--render-output</code>)など。</p>



<p><strong>[フレーム指定オプション] </strong><br><code>-a</code>(<code>--render-anim</code>)もしくは<code>-f</code>(<code>--render-frame</code>)を入れる。<span class="red">このオプションは必ず最後にしないといけない。</span>途中に書くと、命令がそこまでだと認識され、後に書いた部分はすべて無視される。</p>



<h3 class="wp-block-heading"><span id="toc4">自動レンダリングWindowsバッチファイル</span></h3>



<p>Windowsのバッチレンダリングに使える.batファイルを作成してみました。変数を使って、柔軟に変更できるようになっています。<br>set文は、変数の指定を意味しています。<span class="blue">同じ変数の指定文が複数ありますが、一番下にあるものが優先されるので、行の順番を変えることで設定をいじれるようになっています。</span>（このような書き方って、セオリー的にどうなんでしょうかね。あんまり綺麗では無い気がしますが、私はこうやってます。）<br>また、logファイルに、レンダリングの情報が逐一出力されるようになっています。log=nulにすると、ログを作りません。<br>%blender%から始まる行を複製して並べれば、複数ファイルを順番にレンダリングするようなものを作れます。</p>



<pre class="wp-block-preformatted">set blender="C:\Software\Blender\2.81\blender.exe"
set log=nul
set log="Z:\Web\CGBeginner\log.txt"

set blendfile="Z:\Web\CGBeginner\render.blend"
set threads=0

set outpath= --render-output //scene1/render
set outpath=

set frame=--render-frame 359..360
set frame=--render-anim

%blender% --background -noaudio %blendfile% --threads %threads% %outpath% %frame% &gt;&gt; %log% 2&gt;&amp;1

rem @echo off
echo End of Batch
pause</pre>



<h3 class="wp-block-heading"><span id="toc5">自動レンダリングシェルスクリプト(Bash)</span></h3>



<p>Linuxで使うシェルスクリプトも作成しました。中身は.batと同等です。</p>



<pre class="wp-block-code"><code>blender="/home/user/bin/blender2.81/blender"
log="/dev/null"
log="/home/user/log"

blendfile="/home/user/render.blend"
threads=0

outpath="--render-output //scene1/render"
outpath=""

frame="--render-frame 1,3,5"
frame="--render-frame 1..10"
frame="--render-anim"

${blender} --background -noaudio ${blendfile} --threads ${threads} ${outpath} ${frame} &gt;&gt; ${log} 2&gt;&amp;1 &amp;
</code></pre>



<h2 class="wp-block-heading"><span id="toc6">Pythonスクリプトを用いた高度な指定（GPU指定レンダリング）</span></h2>



<p>現在、私のPCはGPUを2台搭載した以下のような構成になっています。</p>



<ul class="wp-block-list">
<li>CPU : AMD Ryzen 9 5950X</li>



<li>GPU 1: NVIDIA GeForce RTX 3080</li>



<li>GPU 2: NVIDIA GeForce RTX 3090</li>
</ul>



<p>基本的に、最後に保存したUser Preferenceの設定がそのまま使われるのですが、バッチ制御でGPUを指定してレンダリングを行いたい！というときがあります。わたしの場合、おなじblendファイルのレンダリングを、GPUごとに別プロセスに分けてレンダリングさせたりしてます。（そっちのほうがシステムが安定している気がする）</p>



<p>上述のコマンドライン引数では、計算タイプ（CUDA, Optix, HIP, etc）の指定や、GPUの指定はできません。そのような場合は、Pythonスクリプトを指定してレンダリングを行うことで実現可能です。</p>



<p>たとえば、上で書いたbatスクリプトを、</p>



<pre class="wp-block-code"><code>set blender=C:\Software\Blender\4.1.1\blender.exe
set blendfile="D:\Data\render.blend"

start %blender% --background -noaudio --python render_gpu0.py -- %blendfile%
start %blender% --background -noaudio --python render_gpu1.py -- %blendfile%</code></pre>



<p>のように書き換えます。Pythonファイルを指定しているわけですが、Pythonファイルは以下のようになります。</p>



<p>render_gpu0.py</p>



<pre class="wp-block-code"><code>import bpy
import sys

# レンダリングする.blendファイルをコマンドライン引数から取得
blend_file_path = sys.argv&#91;-1]

# Optixを使用するように設定
bpy.context.preferences.addons&#91;'cycles'].preferences.compute_device_type = 'OPTIX'

# 利用可能なすべてのデバイスを表示
devices = bpy.context.preferences.addons&#91;'cycles'].preferences.devices
if devices is not None:
    for i, device in enumerate(devices):
        print("Device {}: {}".format(i, device.name))
else:
    print("No devices found.")

# 利用するデバイスを全てOFFに初期設定
devices = bpy.context.preferences.addons&#91;'cycles'].preferences.devices
for device in devices:
    device.use = False

# GPUを指定
devices&#91;3].use = True

# レンダリング設定
bpy.context.scene.render.engine = 'CYCLES'
bpy.context.scene.cycles.device = 'GPU'

# ファイルの読み込みとレンダリング
bpy.ops.wm.open_mainfile(filepath=blend_file_path)
bpy.ops.render.render(animation=True, write_still=False)</code></pre>



<p><span class="red">一旦すべてのデバイスをOFFにした上で、<code>devices[3].use = True</code>と書いてある部分で、GPUの指定をしています。</span>この数字はどこから得たのか？ですが、</p>



<pre class="wp-block-code"><code># 利用可能なすべてのデバイスを表示
devices = bpy.context.preferences.addons&#91;'cycles'].preferences.devices
if devices is not None:
    for i, device in enumerate(devices):
        print("Device {}: {}".format(i, device.name))
else:
    print("No devices found.")</code></pre>



<p>をBlender上のコンソール等で実行することでわかります。私の場合、以下のような出力になります。</p>



<pre class="wp-block-code"><code>Device 0: NVIDIA GeForce RTX 3090
Device 1: NVIDIA GeForce RTX 3080
Device 2: AMD Ryzen 9 5950X 16-Core Processor
Device 3: NVIDIA GeForce RTX 3090
Device 4: NVIDIA GeForce RTX 3080</code></pre>



<p>このうち、Device 0, 1はCUDA、3,4がOptixです。2のCPUについては、CUDAとOptix両方のようです？このことを確認したければ、以下のコード</p>



<pre class="wp-block-code"><code># デバイスが有効かどうか
devices = bpy.context.preferences.addons&#91;'cycles'].preferences.devices
if devices is not None:
    for i, device in enumerate(devices):
        print("Device {}: {}".format(i, device.use))
else:
    print("No devices found.")</code></pre>



<p>をコンソールで動かせば、上記がTrueかFalseか表示されますので、BlenderのGUIでPreferenceをいじりながら、何のチェックを入れたら何がTrueになるのかを見ていけば紐付けられます。ということで私の場合は、RTX3090でOptixレンダリングしたい場合は、<code>devices[3].use = True</code>となるわけです。</p>



<p>render_gpu1.pyには、<code>devices[4].use = True</code>としておけば、それぞれのGPUで別プロセスでレンダリングが自動でできるというわけです。CPUも加えたければ一緒に書いておけばいいと思います。</p>



<p>以下は、RTX3090とCPUでレンダリングするためのPythonコードです。</p>



<p>render_gpu0_cpu.py</p>



<pre class="wp-block-code"><code>import bpy
import sys

# レンダリングする.blendファイルをコマンドライン引数から取得
blend_file_path = sys.argv&#91;-1]

# Optixを使用するように設定
bpy.context.preferences.addons&#91;'cycles'].preferences.compute_device_type = 'OPTIX'

# 利用可能なすべてのデバイスを表示
devices = bpy.context.preferences.addons&#91;'cycles'].preferences.devices
if devices is not None:
    for i, device in enumerate(devices):
        print("Device {}: {}".format(i, device.name))
else:
    print("No devices found.")

# 利用するデバイスを全てOFFに初期設定
devices = bpy.context.preferences.addons&#91;'cycles'].preferences.devices
for device in devices:
    device.use = False

# GPUとCPUを指定
devices&#91;2].use = True
devices&#91;3].use = True

# レンダリング設定
bpy.context.scene.render.engine = 'CYCLES'
bpy.context.scene.cycles.device = 'GPU'

# ファイルの読み込みとレンダリング
bpy.ops.wm.open_mainfile(filepath=blend_file_path)
bpy.ops.render.render(animation=True, write_still=False)</code></pre>



<h2 class="wp-block-heading"><span id="toc7">逆順からレンダリング</span></h2>



<p>Blenderは通常、アニメーションレンダリングは、指定範囲のフレームを、前から順に行っていきます。でも、マシン複数台でレンダリングする際など、レンダリングの順番を制御したいときもあるでしょう。私も、メインマシンとサブマシンでレンダリングする際、両方とも前から順でもいいのですが、たまにマシンの環境違い等によって、微妙に結果が違うレンダリングになってしまうことが経験上ありました。メインマシンとサブマシンで両方とも前から順にレンダリングしていた場合、そういう時に変なフリッカーになってしまい、分離するにも容易じゃない状況になってしまいます。こういう時、メインマシンは前から順、サブマシンは逆順でレンダリングができれば便利では！？そう思ったので方法をメモします。</p>



<p>上で述べた、Pythonスクリプトをベースにして、render_gpu0_backwards.pyと名付けましょう。</p>



<pre class="wp-block-code"><code>import bpy
import sys

# レンダリングする.blendファイルをコマンドライン引数から取得
blend_file_path = sys.argv&#91;-1]

# Optixを使用するように設定
bpy.context.preferences.addons&#91;'cycles'].preferences.compute_device_type = 'OPTIX'

# 利用可能なすべてのデバイスを表示
devices = bpy.context.preferences.addons&#91;'cycles'].preferences.devices
if devices is not None:
    for i, device in enumerate(devices):
        print("Device {}: {}".format(i, device.name))
else:
    print("No devices found.")

# 利用するデバイスを全てOFFに初期設定
devices = bpy.context.preferences.addons&#91;'cycles'].preferences.devices
for device in devices:
    device.use = False

# GPUを指定
devices&#91;0].use = True

# レンダリング設定
bpy.context.scene.render.engine = 'CYCLES'
bpy.context.scene.cycles.device = 'GPU'

# ファイルの読み込みとレンダリング
bpy.ops.wm.open_mainfile(filepath=blend_file_path)
#bpy.ops.render.render(animation=True, write_still=False)

# 逆順にレンダリング
scene = bpy.context.scene

# オリジナルのフレーム範囲を保存
original_start_frame = scene.frame_start
original_end_frame = scene.frame_end

# 逆順にループ
for frame in range(original_end_frame, original_start_frame - 1, -1):
    print(f"Rendering frame {frame}")
    
    # フレーム範囲を1フレームのレンジに設定
    scene.frame_start = frame
    scene.frame_end = frame
    
    # アニメーションのレンダリング
    bpy.ops.render.render(animation=True, write_still=False)
    
    print(f"Finished rendering frame {frame}")

# フレーム範囲を元に戻す
scene.frame_start = original_start_frame
scene.frame_end = original_end_frame

print("Rendering completed.")</code></pre>



<p>上記スクリプトの「逆順にレンダリング」の部分以下がポイントです。やっていることは、もともと設定したレンダリングフレーム範囲を強制的に変更しながら、ループを回すという仕組みです。</p>



<p>scene.frame_startがアニメーション開始フレーム、scene.frame_endがアニメーション終了フレームを意味しており、その情報をoriginal_start_frameとoriginal_end_frameに保持したうえで、scene.frame_startとscene.frame_endを変化させながらループさせます。</p>



<p>もしシーンのフレーム範囲が1から250に設定されている場合、<br>original_end_frame は 250 です。これがループの開始点になります。<br>original_start_frame &#8211; 1 は 0 です (original_start_frame が 1 のため)。<br>-1 はステップサイズで、1ずつ減少させながらループします。<br>最初のループでは、frame は 250 になります。<br>次に、frame は 249 になります。<br>このように、frame は 1 まで1ずつ減少します。<br>frame が 1 になった後、次に frame が 0 になるため、ループが終了します。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://cgbeginner.net/blender-commandline-rendering/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1731</post-id>	</item>
		<item>
		<title>Blender 2.8x系 reroute操作まとめ</title>
		<link>https://cgbeginner.net/blender-reroute/</link>
					<comments>https://cgbeginner.net/blender-reroute/#respond</comments>
		
		<dc:creator><![CDATA[CGBeginner]]></dc:creator>
		<pubDate>Sat, 30 Nov 2019 16:16:43 +0000</pubDate>
				<category><![CDATA[Blender]]></category>
		<category><![CDATA[CG]]></category>
		<guid isPermaLink="false">https://cgbeginner.net/?p=1701</guid>

					<description><![CDATA[ノードを整理するときに活用するreroute(リルート)ですが、いまいち操作がわからないのでまとめました。ちなみにrerouteはこんなものです。ノードをつなぐ丸そのものの形をしています。 ちなみに、ノード同士をつなぐ線 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>ノードを整理するときに活用するreroute(リルート)ですが、いまいち操作がわからないのでまとめました。<br>ちなみにrerouteはこんなものです。ノードをつなぐ丸そのものの形をしています。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="807" height="238" src="https://cgbeginner.net/wp-content/uploads/2019/12/reroute.png" alt="" class="wp-image-1702" srcset="https://cgbeginner.net/wp-content/uploads/2019/12/reroute.png 807w, https://cgbeginner.net/wp-content/uploads/2019/12/reroute-300x88.png 300w, https://cgbeginner.net/wp-content/uploads/2019/12/reroute-768x226.png 768w" sizes="(max-width: 807px) 100vw, 807px" /></figure>



<p>ちなみに、ノード同士をつなぐ線を「ヌードル(noodle)」もしくは「スレッド(thread)」と呼ぶらしいです。</p>



<figure class="wp-block-table"><table class=""><tbody><tr><td>Shift + A -> Layout -> Reroute</td><td>rerouteを追加</td></tr><tr><td>Shift + RMBドラッグ</td><td>描いた線上にあるヌードルにrerouteを挿入</td></tr><tr><td>(rerouteの上から) Alt ＋LMBドラッグ</td><td>rerouteを切り離して動かす</td></tr><tr><td>?</td><td>rerouteを動かす</td></tr><tr><td>(reroute選択状態で) Ctrl + X</td><td>つながりを保持しながら、reroute削除</td></tr><tr><td>(reroute選択状態で) X もしくは Delete</td><td>rerouteに接続中のヌードルもろともreroute削除</td></tr></tbody></table></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://cgbeginner.net/blender-reroute/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1701</post-id>	</item>
		<item>
		<title>Blender2.8x系の必須初期設定まとめ</title>
		<link>https://cgbeginner.net/blender28x-settings/</link>
					<comments>https://cgbeginner.net/blender28x-settings/#respond</comments>
		
		<dc:creator><![CDATA[CGBeginner]]></dc:creator>
		<pubDate>Thu, 28 Nov 2019 15:00:00 +0000</pubDate>
				<category><![CDATA[Blender]]></category>
		<category><![CDATA[CG]]></category>
		<guid isPermaLink="false">https://cgbeginner.net/?p=1690</guid>

					<description><![CDATA[Blender2.80のリリースは、CG界でも大きな話題となりました。UIは洗練され、見た目も今風になり、高性能かつリアルな物理ベースレンダラー(Cycles, EEVEE)が搭載されて、個人的には完全に有料CGソフト( [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Blender2.80のリリースは、CG界でも大きな話題となりました。UIは洗練され、見た目も今風になり、高性能かつリアルな物理ベースレンダラー(Cycles, EEVEE)が搭載されて、<span class="marker">個人的には完全に有料CGソフト(Maya, 3dsmax, Cinema4D,etc&#8230;)と肩を並べる存在になったと思っています。</span>Blender2.79以前で搭載済みの機能でも、初期設定が改善されて、何も初期設定しなくてもほとんど問題なくなっており、かなりかゆいところに手が届くTweakだと思っております。<br>とは言っても、インストールまんまのデフォルト状態では少し足りない部分があるので、その部分の設定についてメモしておきます。</p>



<p>※この記事は、Blender2.81をベースにしています。</p>



<p>さて、早速Blenderを起動しましょう。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="555" src="https://cgbeginner.net/wp-content/uploads/2019/11/splash-1024x555.png" alt="" class="wp-image-1691" srcset="https://cgbeginner.net/wp-content/uploads/2019/11/splash-1024x555.png 1024w, https://cgbeginner.net/wp-content/uploads/2019/11/splash-300x163.png 300w, https://cgbeginner.net/wp-content/uploads/2019/11/splash-768x416.png 768w, https://cgbeginner.net/wp-content/uploads/2019/11/splash-1536x832.png 1536w, https://cgbeginner.net/wp-content/uploads/2019/11/splash.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>画面左上の、<strong>Edit</strong>を押して、<strong>Preferences</strong>をクリックして、設定画面を開きましょう。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="662" height="552" src="https://cgbeginner.net/wp-content/uploads/2019/11/interface1.png" alt="" class="wp-image-1692" srcset="https://cgbeginner.net/wp-content/uploads/2019/11/interface1.png 662w, https://cgbeginner.net/wp-content/uploads/2019/11/interface1-300x250.png 300w" sizes="(max-width: 662px) 100vw, 662px" /></figure>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-14" checked><label class="toc-title" for="toc-checkbox-14">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">日本語ファイルの文字化け(豆腐化)防止</a></li><li><a href="#toc2" tabindex="0">必須アドオンの有効化</a></li><li><a href="#toc3" tabindex="0">ビューポート回転の中心を選択オブジェクトにする</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">日本語ファイルの文字化け(豆腐化)防止</span></h2>



<p>Blenderは海外製ソフトですが、<span class="marker">日本語にも対応することができます</span>。インターフェイスすべてを日本語化することもできますが(初心者はそちらのほうがとっつきやすいかも？)、<span class="red">私はすべて英語表記のほうが良いと思っています。</span>CG関係は情報が英語しかない場合も多いですし、日本語になっている方がかえってわかりにくい場合があると思います。とは言っても、私は日本人で、日本語版のOSを使っていて、日本語のファイルやフォルダもあるわけです。<span class="marker-red">Blenderのインストール直後の状態では、日本語文字はすべて四角の記号に化けてしまいます。</span>（巷では「豆腐化」と言われているらしい。四角が豆腐みたいだから。）したがって、それを解消する設定を行います。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="662" height="552" src="https://cgbeginner.net/wp-content/uploads/2019/11/interface2.png" alt="" class="wp-image-1693" srcset="https://cgbeginner.net/wp-content/uploads/2019/11/interface2.png 662w, https://cgbeginner.net/wp-content/uploads/2019/11/interface2-300x250.png 300w" sizes="(max-width: 662px) 100vw, 662px" /></figure>



<p><strong>Interface</strong>セクションの<strong>Translation</strong>にチェックを入れて有効にし、<strong>Language</strong>を<strong>Japanese(日本語)</strong>に、<strong>Tooltips</strong>のチェックを外します。これで、インターフェイス類は一切日本語化されませんが、日本語の文字は表示できるようになります。</p>



<h2 class="wp-block-heading"><span id="toc2">必須アドオンの有効化</span></h2>



<p>アドオンは人それぞれ意見があるとは思いますが、本当に最小限のもののみ紹介します。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="662" height="552" src="https://cgbeginner.net/wp-content/uploads/2019/11/addons2.png" alt="" class="wp-image-1694" srcset="https://cgbeginner.net/wp-content/uploads/2019/11/addons2.png 662w, https://cgbeginner.net/wp-content/uploads/2019/11/addons2-300x250.png 300w" sizes="(max-width: 662px) 100vw, 662px" /></figure>



<p><strong>Add-ons</strong>セクションの、以下の<strong>Add-on</strong>を有効にします。右上にある虫眼鏡で検索できるので活用してください。</p>



<p><strong>Node Wrangler</strong> : シェーダーノードをいじる場合に必須のアドオン。Ctrl+Shift+LeftClickでノードをクリックすると、そのノードをビューポートで直接確認できるというものです。他にも便利機能がたくさんあります。勝手に師匠と仰いでいる、Blender GuruのAndrew Price氏もよく動画内で使っています。<br><strong>Extra Objects</strong> : メッシュを追加するときに、選べる図形のバラエティが豊かになります。個人的に便利だと思うのは、数式からオブジェクトを作れる機能。3次元グラフとかを作るときに重宝します。<br><strong>LoopTools</strong> : モデリング補助系のアドオン。ループ機能が強化されます。<br><strong>F2</strong> : モデリング補助系のアドオン。面・エッジ系機能が強化されます。</p>



<h2 class="wp-block-heading"><span id="toc3">ビューポート回転の中心を選択オブジェクトにする</span></h2>



<p>ビューポートの回転中心は、デフォルトでは画面の中心（だったかな）です。選択オブジェクトを中心に回転してくれる方が個人的に使い勝手がいいので、その設定をしてしまいます。<br><strong>Navigation</strong>セクションの<strong>Orbit&amp;Pan</strong>タブを開きます。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="662" height="552" src="https://cgbeginner.net/wp-content/uploads/2019/11/navigation1.png" alt="" class="wp-image-1695" srcset="https://cgbeginner.net/wp-content/uploads/2019/11/navigation1.png 662w, https://cgbeginner.net/wp-content/uploads/2019/11/navigation1-300x250.png 300w" sizes="(max-width: 662px) 100vw, 662px" /></figure>



<p>「<strong>Orbit Around Selection</strong>」にチェックを入れます。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="662" height="552" src="https://cgbeginner.net/wp-content/uploads/2019/11/navigation2.png" alt="" class="wp-image-1696" srcset="https://cgbeginner.net/wp-content/uploads/2019/11/navigation2.png 662w, https://cgbeginner.net/wp-content/uploads/2019/11/navigation2-300x250.png 300w" sizes="(max-width: 662px) 100vw, 662px" /></figure>



<p>これだけです。この設定で回転中心をオブジェクトにできました。</p>



<p>以上が私の基本初期設定でした。参考になれば幸いです。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://cgbeginner.net/blender28x-settings/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1690</post-id>	</item>
		<item>
		<title>光の波長をRGBに変換 [Blender Wavelength node]</title>
		<link>https://cgbeginner.net/wavelength-to-rgb/</link>
					<comments>https://cgbeginner.net/wavelength-to-rgb/#comments</comments>
		
		<dc:creator><![CDATA[CGBeginner]]></dc:creator>
		<pubDate>Fri, 01 Nov 2019 15:59:12 +0000</pubDate>
				<category><![CDATA[Blender]]></category>
		<category><![CDATA[CG]]></category>
		<guid isPermaLink="false">https://cgbeginner.net/?p=1562</guid>

					<description><![CDATA[我々が見ている「色」は、実際は異なる波長の光が混ざりあったものですが、CGレンダリングでは通常波長は考慮しません。（一部のレンダラーは波長まで考慮するものがあるそうですが、少なくともBlender cyclesレンダラー [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>我々が見ている「<strong>色</strong>」は、実際は異なる波長の光が混ざりあったものですが、CGレンダリングでは通常<strong><span class="bold-red">波長は考慮しません。</span></strong>（一部のレンダラーは波長まで考慮するものがあるそうですが、少なくともBlender cyclesレンダラーは波長を考慮しません）そこで、<span class="red">Blenderで波長を扱いたい場合、 波長をRGB値に変換する必要があります。</span><br> 実はBlenderには<em>Wavelengthノード</em>と呼ばれる、波長をRGBに変換するノードが存在するのですが、実際にどういう計算をしているのかは知っておいたほうが良いので調べてみることにしました。 <a href="https://blenderartists.org/t/what-algorithm-does-the-wavelength-node-use/1115193">同じことを考えている人</a>はいたみたいですが、このフォーラムでは満足な答えが得られていなかったので、独自に調べました。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-16" checked><label class="toc-title" for="toc-checkbox-16">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">波長RGB変換機</a></li><li><a href="#toc2" tabindex="0">解説</a><ol><li><a href="#toc3" tabindex="0">CIE測色標準観察者等色関数(XYZ色空間)</a></li><li><a href="#toc4" tabindex="0">XYZ色空間からRGB色空間へ</a><ol><li><a href="#toc5" tabindex="0">CIEの定義</a></li><li><a href="#toc6" tabindex="0">ITU Rec.709の定義</a></li></ol></li><li><a href="#toc7" tabindex="0">細かい処理</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">波長RGB変換機</span></h2>



<p>Blender Wavelength nodeのアルゴリズムを調べて、Webで同じ結果が出るようにした計算機を作りました。<span class="red"><strong>380 nm ～ 780 nm</strong> </span>の波長に対応しています(wavelengthノードも同様)。好きな波長を入力すると、それに対応したRGBの値が、０～１の浮動小数点(float)、8bitの10進数表記、8bitの16進数カラーコード表記で表示されます。<br>またプリセットとして、<strong>CIE(国際照明委員会 Commission internationale de l&#8217;eclairage)</strong>で定められた、赤(R)：700.0 [nm]、緑(G)：546.1[nm]、青(B)：435.8[nm]と、等色関数(後述)から得られる、純粋なRGB成分が出る波長を用意しています。<br>※700nmは、この変換式ではほぼ黒(に寄った赤)になります。</p>



<style>
    .wavelength-converter .form-range::-webkit-slider-thumb {
        -webkit-appearance: none;
        appearance: none;
        width: 20px;
        height: 20px;
        border-radius: 50%;
        background: #0d6efd;
        cursor: pointer;
    }
    .wavelength-converter .form-range::-moz-range-thumb {
        width: 20px;
        height: 20px;
        border-radius: 50%;
        background: #0d6efd;
        cursor: pointer;
    }
    .wavelength-converter #target {
        width: 100px;
        height: 100px;
        border: 1px solid #000;
        margin-top: 10px;
        display: flex;
        align-items: center;
        justify-content: center;
    }
    .wavelength-converter .btn-group .btn {
        border: 1px solid #fff;
        transition: opacity 0.3s;
    }
    .wavelength-converter .btn-group .btn:hover {
        opacity: 0.8;
    }
</style>



    <form name="js" class="mb-4">
        <div class="mb-3">
            <label for="wavelengthSlider" class="form-label">Wavelength (波長) [nm]:</label>
            <div class="row align-items-center">
                <div class="col-md-8 mb-2 mb-md-0">
                    <input type="range" class="form-range" name="wavelengthslider" value="550" min="380" max="780" oninput="updateWavelengthValue(this.value)" id="wavelengthSlider">
                </div>
                <div class="col-md-4">
                    <div class="input-group">
                        <input type="number" class="form-control" name="wavelengthtextbox" value="550" min="380" max="780" oninput="updateWavelengthValue(this.value)" id="wavelengthTextbox">
                        <span class="input-group-text">nm</span>
                    </div>
                </div>
            </div>
        </div>
        <div class="btn-group mb-3 flex-wrap" role="group">
            <button type="button" class="btn" style="background-color: #030000; color: white;" onclick="setWavelength(700)">CIE赤(700.0nm)</button>
            <button type="button" class="btn" style="background-color: #fa0000; color: white;" onclick="setWavelength(610)">赤(610nm)</button>
            <button type="button" class="btn" style="background-color: #009200; color: white;" onclick="setWavelength(550)">緑(550nm)</button>
            <button type="button" class="btn" style="background-color: #009500; color: white;" onclick="setWavelength(546.1)">CIE緑(546.1nm)</button>
            <button type="button" class="btn" style="background-color: #0000a3; color: white;" onclick="setWavelength(465)">青(465nm)</button>
            <button type="button" class="btn" style="background-color: #1700b1; color: white;" onclick="setWavelength(435.8)">CIE青(435.8nm)</button>
        </div>
    </form>
    <div class="mb-3">
        <p id="rgbfloat" class="mb-1">Color(float) : R,G,B = 0.00000,0.00000,0.00000</p>
        <p id="rgb8d" class="mb-1">Color (8bit decimal) : R,G,B = 0, 0, 0</p>
        <p id="rgb8h" class="mb-1">Color (8bit hexadecimal) : RGB = #000000</p>
    </div>
    <div id="target" class="rounded">■色見本■</div>



<script>
function updateWavelengthValue(value) {
  document.js.wavelengthslider.value = value; // スライダーの値を更新
  document.js.wavelengthtextbox.value = value; // テキストボックスの値を更新
  wl_convert(); // 色変換関数を呼び出し
}

function wl_convert(){

var cie_colour_match = [
    [	0.0014 	,	0.0000 	,	0.0065 	],
    [	0.0022 	,	0.0001 	,	0.0105 	],
    [	0.0042 	,	0.0001 	,	0.0201 	],
    [	0.0076 	,	0.0002 	,	0.0362 	],
    [	0.0143 	,	0.0004 	,	0.0679 	],
    [	0.0232 	,	0.0006 	,	0.1102 	],
    [	0.0435 	,	0.0012 	,	0.2074 	],
    [	0.0776 	,	0.0022 	,	0.3713 	],
    [	0.1344 	,	0.0040 	,	0.6456 	],
    [	0.2148 	,	0.0073 	,	1.0391 	],
    [	0.2839 	,	0.0116 	,	1.3856 	],
    [	0.3285 	,	0.0168 	,	1.6230 	],
    [	0.3483 	,	0.0230 	,	1.7471 	],
    [	0.3481 	,	0.0298 	,	1.7826 	],
    [	0.3362 	,	0.0380 	,	1.7721 	],
    [	0.3187 	,	0.0480 	,	1.7441 	],
    [	0.2908 	,	0.0600 	,	1.6692 	],
    [	0.2511 	,	0.0739 	,	1.5281 	],
    [	0.1954 	,	0.0910 	,	1.2876 	],
    [	0.1421 	,	0.1126 	,	1.0419 	],
    [	0.0956 	,	0.1390 	,	0.8130 	],
    [	0.0580 	,	0.1693 	,	0.6162 	],
    [	0.0320 	,	0.2080 	,	0.4652 	],
    [	0.0147 	,	0.2586 	,	0.3533 	],
    [	0.0049 	,	0.3230 	,	0.2720 	],
    [	0.0024 	,	0.4073 	,	0.2123 	],
    [	0.0093 	,	0.5030 	,	0.1582 	],
    [	0.0291 	,	0.6082 	,	0.1117 	],
    [	0.0633 	,	0.7100 	,	0.0782 	],
    [	0.1096 	,	0.7932 	,	0.0573 	],
    [	0.1655 	,	0.8620 	,	0.0422 	],
    [	0.2257 	,	0.9149 	,	0.0298 	],
    [	0.2904 	,	0.9540 	,	0.0203 	],
    [	0.3597 	,	0.9803 	,	0.0134 	],
    [	0.4334 	,	0.9950 	,	0.0087 	],
    [	0.5121 	,	1.0000 	,	0.0057 	],
    [	0.5945 	,	0.9950 	,	0.0039 	],
    [	0.6784 	,	0.9786 	,	0.0027 	],
    [	0.7621 	,	0.9520 	,	0.0021 	],
    [	0.8425 	,	0.9154 	,	0.0018 	],
    [	0.9163 	,	0.8700 	,	0.0017 	],
    [	0.9786 	,	0.8163 	,	0.0014 	],
    [	1.0263 	,	0.7570 	,	0.0011 	],
    [	1.0567 	,	0.6949 	,	0.0010 	],
    [	1.0622 	,	0.6310 	,	0.0008 	],
    [	1.0456 	,	0.5668 	,	0.0006 	],
    [	1.0026 	,	0.5030 	,	0.0003 	],
    [	0.9384 	,	0.4412 	,	0.0002 	],
    [	0.8544 	,	0.3810 	,	0.0002 	],
    [	0.7514 	,	0.3210 	,	0.0001 	],
    [	0.6424 	,	0.2650 	,	0.0000 	],
    [	0.5419 	,	0.2170 	,	0.0000 	],
    [	0.4479 	,	0.1750 	,	0.0000 	],
    [	0.3608 	,	0.1382 	,	0.0000 	],
    [	0.2835 	,	0.1070 	,	0.0000 	],
    [	0.2187 	,	0.0816 	,	0.0000 	],
    [	0.1649 	,	0.0610 	,	0.0000 	],
    [	0.1212 	,	0.0446 	,	0.0000 	],
    [	0.0874 	,	0.0320 	,	0.0000 	],
    [	0.0636 	,	0.0232 	,	0.0000 	],
    [	0.0468 	,	0.0170 	,	0.0000 	],
    [	0.0329 	,	0.0119 	,	0.0000 	],
    [	0.0227 	,	0.0082 	,	0.0000 	],
    [	0.0158 	,	0.0057 	,	0.0000 	],
    [	0.0114 	,	0.0041 	,	0.0000 	],
    [	0.0081 	,	0.0029 	,	0.0000 	],
    [	0.0058 	,	0.0021 	,	0.0000 	],
    [	0.0041 	,	0.0015 	,	0.0000 	],
    [	0.0029 	,	0.0010 	,	0.0000 	],
    [	0.0020 	,	0.0007 	,	0.0000 	],
    [	0.0014 	,	0.0005 	,	0.0000 	],
    [	0.0010 	,	0.0004 	,	0.0000 	],
    [	0.0007 	,	0.0002 	,	0.0000 	],
    [	0.0005 	,	0.0002 	,	0.0000 	],
    [	0.0003 	,	0.0001 	,	0.0000 	],
    [	0.0002 	,	0.0001 	,	0.0000 	],
    [	0.0002 	,	0.0001 	,	0.0000 	],
    [	0.0001 	,	0.0000 	,	0.0000 	],
    [	0.0001 	,	0.0000 	,	0.0000 	],
    [	0.0001 	,	0.0000 	,	0.0000 	],
    [	0.0000 	,	0.0000 	,	0.0000 	]
];

var lambda_nm = document.js.wavelengthtextbox.value;

var ii = (lambda_nm - 380.0) * (1.0 / 5.0);  // scaled 0..80
var i = parseInt(ii);

var color = [0.0, 0.0, 0.0];
if (i < 0 || i >= 80) {
    color = [0.0, 0.0, 0.0];
}
else {
    ii -= i; //ii = ii - i;
    color[0] = cie_colour_match[i][0] + (cie_colour_match[i+1][0] - cie_colour_match[i][0]) * ii;
    color[1] = cie_colour_match[i][1] + (cie_colour_match[i+1][1] - cie_colour_match[i][1]) * ii;
    color[2] = cie_colour_match[i][2] + (cie_colour_match[i+1][2] - cie_colour_match[i][2]) * ii;
}

color = [3.240479 * color[0] + -1.537150 * color[1] + -0.498535 * color[2],
        -0.969256 * color[0] +  1.875991 * color[1] +  0.041556 * color[2],
         0.055648 * color[0] + -0.204043 * color[1] +  1.057311 * color[2]];

color[0] *= 1.0 / 2.52;  // Empirical scale from lg to make all comps <= 1
color[1] *= 1.0 / 2.52;  // Empirical scale from lg to make all comps <= 1
color[2] *= 1.0 / 2.52;  // Empirical scale from lg to make all comps <= 1

/* Clamp to zero if values are smaller */
color[0] = Math.max(color[0], 0.0);
color[1] = Math.max(color[1], 0.0);
color[2] = Math.max(color[2], 0.0);

var colorcode10 = [0, 0, 0];
colorcode10[0] = Math.min(parseInt(color[0] * 255), 255);
colorcode10[1] = Math.min(parseInt(color[1] * 255), 255);
colorcode10[2] = Math.min(parseInt(color[2] * 255), 255);

var colorcode16 =  [0, 0, 0];
colorcode16[0] = colorcode10[0].toString(16);
colorcode16[0] == ('00' + colorcode16[0] ).slice(-2);
colorcode16[1] = colorcode10[1].toString(16);
colorcode16[1] == ('00' + colorcode16[1] ).slice(-2);
colorcode16[2] = colorcode10[2].toString(16);
colorcode16[2] == ('00' + colorcode16[2] ).slice(-2);

var hex = '#' + ('00' + colorcode16[0].toString(16)).slice(-2) + ('00' + colorcode16[1].toString(16)).slice(-2) + ('00' + colorcode16[2].toString(16)).slice(-2);

var obj = document.getElementById("target");
obj.style.color = '#ffffff';
obj.style.backgroundColor = hex;

rgbfloat = document.getElementById("rgbfloat");
rgbfloat.innerHTML = "Color(float) : R,G,B = "+color[0].toFixed(5) +","+color[1].toFixed(5)+","+color[2].toFixed(5);
rgb8d = document.getElementById("rgb8d");
rgb8d.innerHTML = "Color (8bit decimal) : R,G,B = "+colorcode10[0].toFixed(0) +","+colorcode10[1].toFixed(0)+","+colorcode10[2].toFixed(0);
rgb8h = document.getElementById("rgb8h");
rgb8h.innerHTML = "Color (8bit hexadecimal) : RGB = "+hex;



}





function wl_ciered(){
  document.js.wavelengthtextbox.value="700.0";
  wl_convert()
}
function wl_ciegreen(){
  document.js.wavelengthtextbox.value="546.1";
  wl_convert()
}
function wl_cieblue(){
  document.js.wavelengthtextbox.value="435.8";
  wl_convert()
}
function wl_red(){
  document.js.wavelengthtextbox.value="610";
  wl_convert()
}
function wl_green(){
  document.js.wavelengthtextbox.value="550";
  wl_convert()
}
function wl_blue(){
  document.js.wavelengthtextbox.value="465";
  wl_convert()
}

function setWavelength(wavelength) {
  updateWavelengthValue(wavelength); // 特定の波長値をセットし、表示を更新
}

// ページがロードされた際に初期値で色を表示
document.addEventListener('DOMContentLoaded', function() {
  wl_convert();
});

</script>



<h2 class="wp-block-heading"><span id="toc2">解説</span></h2>



<h3 class="wp-block-heading"><span id="toc3">CIE測色標準観察者等色関数(XYZ色空間)</span></h3>



<p>Blenderのソースコードをwavelengthで検索すると、変換の仕組みが見えてきました。このWavelengthノードは CIE 1931 色空間をベースにしている様子です。 CIEの<strong>CIE測色標準観察者等色関数</strong>(The CIE XYZ standard observer color matching functions)が<a href="https://github.com/blender/blender/blob/main/source/blender/imbuf/intern/colormanagement.cc#L4378">ソースコードに組み込まれて</a>いました。</p>



<p><span class="fz-12px">2024/02追記：Blenderソースコードの構成がいつの間にか変わってたので再リンクしました。また、CIE関数が埋め込まれているソースも別ファイルに切り出されてました。<br>(/intern/cycles/kernel/svm/svm_wavelength.h → /intern/cycles/kernel/svm/wavelength.h)</span></p>



<figure class="wp-block-image aligncenter"><img loading="lazy" decoding="async" width="600" height="371" src="https://cgbeginner.net/wp-content/uploads/2019/11/CIE-XYZ-standard-observer-color-matching-functions.png" alt="" class="wp-image-1653" srcset="https://cgbeginner.net/wp-content/uploads/2019/11/CIE-XYZ-standard-observer-color-matching-functions.png 600w, https://cgbeginner.net/wp-content/uploads/2019/11/CIE-XYZ-standard-observer-color-matching-functions-300x186.png 300w" sizes="(max-width: 600px) 100vw, 600px" /></figure>



<p class="has-text-align-center">Figure 1.  CIE測色標準観察者等色関数 </p>



<p>グラフの元になるのは、以下のデータです。</p>



<p class="has-text-align-center">Table 1. CIE測色標準観察者等色関数</p>



<figure class="wp-block-table fz-12px"><table><tbody><tr><td><strong>ID</strong></td><td><strong>Increment</strong></td><td><strong>Wavelength (nm)</strong></td><td><strong>xBar</strong></td><td><strong>yBar</strong></td><td><strong>zBar</strong></td></tr><tr><td>0</td><td>0</td><td>380</td><td>0.0014</td><td>0.0000</td><td>0.0065</td></tr><tr><td>1</td><td>5</td><td>385</td><td>0.0022</td><td>0.0001</td><td>0.0105</td></tr><tr><td>2</td><td>10</td><td>390</td><td>0.0042</td><td>0.0001</td><td>0.0201</td></tr><tr><td>3</td><td>15</td><td>395</td><td>0.0076</td><td>0.0002</td><td>0.0362</td></tr><tr><td>4</td><td>20</td><td>400</td><td>0.0143</td><td>0.0004</td><td>0.0679</td></tr><tr><td>5</td><td>25</td><td>405</td><td>0.0232</td><td>0.0006</td><td>0.1102</td></tr><tr><td>6</td><td>30</td><td>410</td><td>0.0435</td><td>0.0012</td><td>0.2074</td></tr><tr><td>7</td><td>35</td><td>415</td><td>0.0776</td><td>0.0022</td><td>0.3713</td></tr><tr><td>8</td><td>40</td><td>420</td><td>0.1344</td><td>0.0040</td><td>0.6456</td></tr><tr><td>9</td><td>45</td><td>425</td><td>0.2148</td><td>0.0073</td><td>1.0391</td></tr><tr><td>10</td><td>50</td><td>430</td><td>0.2839</td><td>0.0116</td><td>1.3856</td></tr><tr><td>11</td><td>55</td><td>435</td><td>0.3285</td><td>0.0168</td><td>1.6230</td></tr><tr><td>12</td><td>60</td><td>440</td><td>0.3483</td><td>0.0230</td><td>1.7471</td></tr><tr><td>13</td><td>65</td><td>445</td><td>0.3481</td><td>0.0298</td><td>1.7826</td></tr><tr><td>14</td><td>70</td><td>450</td><td>0.3362</td><td>0.0380</td><td>1.7721</td></tr><tr><td>15</td><td>75</td><td>455</td><td>0.3187</td><td>0.0480</td><td>1.7441</td></tr><tr><td>16</td><td>80</td><td>460</td><td>0.2908</td><td>0.0600</td><td>1.6692</td></tr><tr><td>17</td><td>85</td><td>465</td><td>0.2511</td><td>0.0739</td><td>1.5281</td></tr><tr><td>18</td><td>90</td><td>470</td><td>0.1954</td><td>0.0910</td><td>1.2876</td></tr><tr><td>19</td><td>95</td><td>475</td><td>0.1421</td><td>0.1126</td><td>1.0419</td></tr><tr><td>20</td><td>100</td><td>480</td><td>0.0956</td><td>0.1390</td><td>0.8130</td></tr><tr><td>21</td><td>105</td><td>485</td><td>0.0580</td><td>0.1693</td><td>0.6162</td></tr><tr><td>22</td><td>110</td><td>490</td><td>0.0320</td><td>0.2080</td><td>0.4652</td></tr><tr><td>23</td><td>115</td><td>495</td><td>0.0147</td><td>0.2586</td><td>0.3533</td></tr><tr><td>24</td><td>120</td><td>500</td><td>0.0049</td><td>0.3230</td><td>0.2720</td></tr><tr><td>25</td><td>125</td><td>505</td><td>0.0024</td><td>0.4073</td><td>0.2123</td></tr><tr><td>26</td><td>130</td><td>510</td><td>0.0093</td><td>0.5030</td><td>0.1582</td></tr><tr><td>27</td><td>135</td><td>515</td><td>0.0291</td><td>0.6082</td><td>0.1117</td></tr><tr><td>28</td><td>140</td><td>520</td><td>0.0633</td><td>0.7100</td><td>0.0782</td></tr><tr><td>29</td><td>145</td><td>525</td><td>0.1096</td><td>0.7932</td><td>0.0573</td></tr><tr><td>30</td><td>150</td><td>530</td><td>0.1655</td><td>0.8620</td><td>0.0422</td></tr><tr><td>31</td><td>155</td><td>535</td><td>0.2257</td><td>0.9149</td><td>0.0298</td></tr><tr><td>32</td><td>160</td><td>540</td><td>0.2904</td><td>0.9540</td><td>0.0203</td></tr><tr><td>33</td><td>165</td><td>545</td><td>0.3597</td><td>0.9803</td><td>0.0134</td></tr><tr><td>34</td><td>170</td><td>550</td><td>0.4334</td><td>0.9950</td><td>0.0087</td></tr><tr><td>35</td><td>175</td><td>555</td><td>0.5121</td><td>1.0000</td><td>0.0057</td></tr><tr><td>36</td><td>180</td><td>560</td><td>0.5945</td><td>0.9950</td><td>0.0039</td></tr><tr><td>37</td><td>185</td><td>565</td><td>0.6784</td><td>0.9786</td><td>0.0027</td></tr><tr><td>38</td><td>190</td><td>570</td><td>0.7621</td><td>0.9520</td><td>0.0021</td></tr><tr><td>39</td><td>195</td><td>575</td><td>0.8425</td><td>0.9154</td><td>0.0018</td></tr><tr><td>40</td><td>200</td><td>580</td><td>0.9163</td><td>0.8700</td><td>0.0017</td></tr><tr><td>41</td><td>205</td><td>585</td><td>0.9786</td><td>0.8163</td><td>0.0014</td></tr><tr><td>42</td><td>210</td><td>590</td><td>1.0263</td><td>0.7570</td><td>0.0011</td></tr><tr><td>43</td><td>215</td><td>595</td><td>1.0567</td><td>0.6949</td><td>0.0010</td></tr><tr><td>44</td><td>220</td><td>600</td><td>1.0622</td><td>0.6310</td><td>0.0008</td></tr><tr><td>45</td><td>225</td><td>605</td><td>1.0456</td><td>0.5668</td><td>0.0006</td></tr><tr><td>46</td><td>230</td><td>610</td><td>1.0026</td><td>0.5030</td><td>0.0003</td></tr><tr><td>47</td><td>235</td><td>615</td><td>0.9384</td><td>0.4412</td><td>0.0002</td></tr><tr><td>48</td><td>240</td><td>620</td><td>0.8544</td><td>0.3810</td><td>0.0002</td></tr><tr><td>49</td><td>245</td><td>625</td><td>0.7514</td><td>0.3210</td><td>0.0001</td></tr><tr><td>50</td><td>250</td><td>630</td><td>0.6424</td><td>0.2650</td><td>0.0000</td></tr><tr><td>51</td><td>255</td><td>635</td><td>0.5419</td><td>0.2170</td><td>0.0000</td></tr><tr><td>52</td><td>260</td><td>640</td><td>0.4479</td><td>0.1750</td><td>0.0000</td></tr><tr><td>53</td><td>265</td><td>645</td><td>0.3608</td><td>0.1382</td><td>0.0000</td></tr><tr><td>54</td><td>270</td><td>650</td><td>0.2835</td><td>0.1070</td><td>0.0000</td></tr><tr><td>55</td><td>275</td><td>655</td><td>0.2187</td><td>0.0816</td><td>0.0000</td></tr><tr><td>56</td><td>280</td><td>660</td><td>0.1649</td><td>0.0610</td><td>0.0000</td></tr><tr><td>57</td><td>285</td><td>665</td><td>0.1212</td><td>0.0446</td><td>0.0000</td></tr><tr><td>58</td><td>290</td><td>670</td><td>0.0874</td><td>0.0320</td><td>0.0000</td></tr><tr><td>59</td><td>295</td><td>675</td><td>0.0636</td><td>0.0232</td><td>0.0000</td></tr><tr><td>60</td><td>300</td><td>680</td><td>0.0468</td><td>0.0170</td><td>0.0000</td></tr><tr><td>61</td><td>305</td><td>685</td><td>0.0329</td><td>0.0119</td><td>0.0000</td></tr><tr><td>62</td><td>310</td><td>690</td><td>0.0227</td><td>0.0082</td><td>0.0000</td></tr><tr><td>63</td><td>315</td><td>695</td><td>0.0158</td><td>0.0057</td><td>0.0000</td></tr><tr><td>64</td><td>320</td><td>700</td><td>0.0114</td><td>0.0041</td><td>0.0000</td></tr><tr><td>65</td><td>325</td><td>705</td><td>0.0081</td><td>0.0029</td><td>0.0000</td></tr><tr><td>66</td><td>330</td><td>710</td><td>0.0058</td><td>0.0021</td><td>0.0000</td></tr><tr><td>67</td><td>335</td><td>715</td><td>0.0041</td><td>0.0015</td><td>0.0000</td></tr><tr><td>68</td><td>340</td><td>720</td><td>0.0029</td><td>0.0010</td><td>0.0000</td></tr><tr><td>69</td><td>345</td><td>725</td><td>0.0020</td><td>0.0007</td><td>0.0000</td></tr><tr><td>70</td><td>350</td><td>730</td><td>0.0014</td><td>0.0005</td><td>0.0000</td></tr><tr><td>71</td><td>355</td><td>735</td><td>0.0010</td><td>0.0004</td><td>0.0000</td></tr><tr><td>72</td><td>360</td><td>740</td><td>0.0007</td><td>0.0002</td><td>0.0000</td></tr><tr><td>73</td><td>365</td><td>745</td><td>0.0005</td><td>0.0002</td><td>0.0000</td></tr><tr><td>74</td><td>370</td><td>750</td><td>0.0003</td><td>0.0001</td><td>0.0000</td></tr><tr><td>75</td><td>375</td><td>755</td><td>0.0002</td><td>0.0001</td><td>0.0000</td></tr><tr><td>76</td><td>380</td><td>760</td><td>0.0002</td><td>0.0001</td><td>0.0000</td></tr><tr><td>77</td><td>385</td><td>765</td><td>0.0001</td><td>0.0000</td><td>0.0000</td></tr><tr><td>78</td><td>390</td><td>770</td><td>0.0001</td><td>0.0000</td><td>0.0000</td></tr><tr><td>79</td><td>395</td><td>775</td><td>0.0001</td><td>0.0000</td><td>0.0000</td></tr><tr><td>80</td><td>400</td><td>780</td><td>0.0000</td><td>0.0000</td><td>0.0000</td></tr></tbody></table></figure>



<p>これは波長をCIE XYZ 色空間の値に変換するもので、これを基底変換してRGBに変換することができるそう。(歴史的には、RGBが先でXYZが後にできた色空間だそうです)変換については、詳細なまとめ記事があったのでそちらを参照してください。</p>




<a rel="noopener" href="https://qiita.com/Ushio/items/7a5d80612796c4bcfca6" title="XYZ色空間に迫る(2) - Qiita" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Fqiita.com%2FUshio%2Fitems%2F7a5d80612796c4bcfca6?w=160&#038;h=90" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">XYZ色空間に迫る(2) - Qiita</div><div class="blogcard-snippet external-blogcard-snippet">XYZ色空間に迫る(1) からの続きになります。 いよいよ本題のXYZ色空間です。 イケてないRGB色空間 前回で1931 CIE RGB等色関数を手に入れました。そしてRGBの三値刺激は空間の座標と捉えることができ、それをCIE 1931...</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://qiita.com/Ushio/items/7a5d80612796c4bcfca6" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">qiita.com</div></div></div></div></a>



<h3 class="wp-block-heading"><span id="toc4">XYZ色空間からRGB色空間へ</span></h3>



<h4 class="wp-block-heading"><span id="toc5">CIEの定義</span></h4>



<p>CIE RGB色空間からCIE XYZ色空間への変換は、線形変換として定義できます。<strong>CIE特別委員会で定義された変換式</strong>は以下のような形です。</p>



[mathjax]<br>$$\begin{pmatrix} X \\ Y \\ Z \end{pmatrix}=\begin{pmatrix} 2.7688 &amp; 1.7517  &amp; 1.1301 \\ 1.0000 &amp; 4.5906 &amp; 0.060067 \\ 0.0000 &amp; 0.056507 &amp; 5.5942 \end{pmatrix}\begin{pmatrix} R_{\mathrm{CIE}} \\ G_{\mathrm{CIE}} \\ B_{\mathrm{CIE}} \end{pmatrix}\tag{1}$$<br>$$\begin{pmatrix} R_{\mathrm{CIE}} \\ G_{\mathrm{CIE}} \\ B _{\mathrm{CIE}}\end{pmatrix}=\begin{pmatrix} 0.41847 &amp; -0.15866  &amp; -0.082835 \\ -0.091169 &amp; 0.25243 &amp; 0.015708 \\ 0.00092090 &amp; -0.0025498 &amp; 0.17860 \end{pmatrix}\begin{pmatrix} X \\ Y \\ Z \end{pmatrix}\tag{2}$$</p>



<p>この変換式は、WikipediaのCIE1931色空間のページにあるものと同等のものです。(有効数字5桁)</p>




<a rel="noopener" href="https://ja.wikipedia.org/wiki/CIE_1931_%E8%89%B2%E7%A9%BA%E9%96%93#%E3%83%A9%E3%82%A4%E3%83%88%E3%81%A8%E3%82%AE%E3%83%AB%E3%83%89%E3%81%AE%E5%AE%9F%E9%A8%93%E7%B5%90%E6%9E%9C%E3%81%8B%E3%82%89CIE_XYZ_%E8%89%B2%E7%A9%BA%E9%96%93%E3%81%B8" title="CIE 1931 色空間 - Wikipedia" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Fja.wikipedia.org%2Fwiki%2FCIE_1931_%25E8%2589%25B2%25E7%25A9%25BA%25E9%2596%2593%23%25E3%2583%25A9%25E3%2582%25A4%25E3%2583%2588%25E3%2581%25A8%25E3%2582%25AE%25E3%2583%25AB%25E3%2583%2589%25E3%2581%25AE%25E5%25AE%259F%25E9%25A8%2593%25E7%25B5%2590%25E6%259E%259C%25E3%2581%258B%25E3%2582%2589CIE_XYZ_%25E8%2589%25B2%25E7%25A9%25BA%25E9%2596%2593%25E3%2581%25B8?w=160&#038;h=90" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">CIE 1931 色空間 - Wikipedia</div><div class="blogcard-snippet external-blogcard-snippet"></div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://ja.wikipedia.org/wiki/CIE_1931_%E8%89%B2%E7%A9%BA%E9%96%93#%E3%83%A9%E3%82%A4%E3%83%88%E3%81%A8%E3%82%AE%E3%83%AB%E3%83%89%E3%81%AE%E5%AE%9F%E9%A8%93%E7%B5%90%E6%9E%9C%E3%81%8B%E3%82%89CIE_XYZ_%E8%89%B2%E7%A9%BA%E9%96%93%E3%81%B8" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">ja.wikipedia.org</div></div></div></div></a>



<p>上記のCIE測色標準観察者等色関数とCIE RGB色空間からCIE XYZ色空間への変換式を組み合わせることで、波長をRGBに変換することができます。(ページ上部変換器1)<br>しかし、</p>



<h4 class="wp-block-heading"><span id="toc6">ITU Rec.709の定義</span></h4>



<p><a href="https://github.com/blender/blender/blob/main/intern/cycles/kernel/osl/shaders/node_color.h#L75">Blenderソースコード中で見つかった変換式</a>は、上記のものとは違っていました。</p>



<p>調べたところ、Blenderのノード中では、<strong>ITU Recommendation BT.709</strong> (Rec.709) 準拠の変換式が組み込まれているようです。これは白色点(Whitepoint) D65での変換式とのこと。Blenderはグラフィックソフトなので、現代の映像で一番用いられている色空間を採用しているということですかね。</p>



<p> [mathjax]<br>$$\begin{pmatrix} X \\ Y \\ Z \end{pmatrix}=\begin{pmatrix} 0.412453 &amp; 0.357580  &amp; 0.180423 \\ 0.212671 &amp; 0.715160 &amp; 0.072169 \\ 0.019334 &amp; 0.119193 &amp; 0.950277 \end{pmatrix}\begin{pmatrix} R_{709} \\ G_{709} \\ B_{709} \end{pmatrix}\tag{3}$$<br>$$\begin{pmatrix} R_{709} \\ G_{709} \\ B_{709} \end{pmatrix}=\begin{pmatrix} 3.240479 &amp; -1.537150  &amp; -0.498535 \\ -0.969256 &amp; 1.875992 &amp; 0.041556 \\ 0.055648 &amp; -0.204043 &amp; 1.057311 \end{pmatrix}\begin{pmatrix} X \\ Y \\ Z \end{pmatrix}\tag{4}$$ </p>



<p><span class="fz-12px">2024/02追記：Blenderソースコードの構成がいつの間にか変わってたので再リンクしました<br>(/intern/cycles/kernel/shaders/node_color.h#L76 → /intern/cycles/kernel/osl/shaders/node_color.h#L75</span></p>



<h3 class="wp-block-heading"><span id="toc7">細かい処理</span></h3>



<p>また、ソースコードには、</p>



<pre class="wp-block-code"><code>color *= 1.0f / 2.52f;  // Empirical scale from lg to make all comps &lt;= 1</code></pre>



<p>という部分があり、得られた<strong>RGBの値を2.52で割っている</strong>ことがわかりました。調べたところ、ソニー・ピクチャーズ傘下のImageworks社が開発する、OSL(Open Shading Language)の<a href="https://github.com/imageworks/OpenShadingLanguage/blob/master/src/liboslexec/opcolor.cpp">ソースコード</a>から転用されていることがわかりました。すべての値が1を下回るようにするための経験的な値ということですね。</p>



<p>さらに、最後に0を下回った(負の)値を0にクランプする処理が行われて完成です。</p>



<pre class="wp-block-code"><code>  /* Clamp to zero if values are smaller */
  color = max(color, make_float3(0.0f, 0.0f, 0.0f));</code></pre>



<p>ということで、BlenderのWavelength node(波長ノード)の仕組みを解き明かしました。<br>この計算式をWeb上で計算できるようにした計算機がこのページ上部にありますので、活用してください。Wavelengthノードと全く同じ色になるはずです。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://cgbeginner.net/wavelength-to-rgb/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1562</post-id>	</item>
		<item>
		<title>物理的に正しい&#8221;明るさ&#8221;を使う [Blender Cycles]</title>
		<link>https://cgbeginner.net/blender-cycles-physically-correct-brightness/</link>
					<comments>https://cgbeginner.net/blender-cycles-physically-correct-brightness/#respond</comments>
		
		<dc:creator><![CDATA[CGBeginner]]></dc:creator>
		<pubDate>Sun, 05 May 2019 13:22:08 +0000</pubDate>
				<category><![CDATA[Blender]]></category>
		<category><![CDATA[CG]]></category>
		<guid isPermaLink="false">https://cgbeginner.net/?p=1295</guid>

					<description><![CDATA[最近、PBR : Physically-Based Rendering (物理的に正しいレンダリング)という概念がメインになってきています。 目次 結論PBRとは物理的に正しい&#8221;明るさ&#8221;Cycle [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>最近、PBR : Physically-Based Rendering (物理的に正しいレンダリング)という概念がメインになってきています。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-18" checked><label class="toc-title" for="toc-checkbox-18">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">結論</a></li><li><a href="#toc2" tabindex="0">PBRとは</a></li><li><a href="#toc3" tabindex="0">物理的に正しい&#8221;明るさ&#8221;</a><ol><li><a href="#toc4" tabindex="0">Cyclesライトの明るさの単位</a></li><li><a href="#toc5" tabindex="0">放射照度 Irradiance</a></li><li><a href="#toc6" tabindex="0">照度 Illuminance</a></li><li><a href="#toc7" tabindex="0">JIS照度基準</a></li></ol></li><li><a href="#toc8" tabindex="0">物理的に正確な太陽モデル</a></li><li><a href="#toc9" tabindex="0">Filmic Color Management</a></li><li><a href="#toc10" tabindex="0">正しい「色」について</a></li><li><a href="#toc11" tabindex="0">参考サイト</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">結論</span></h2>



<p>先に結論を書いちゃいますと、</p>



<p>Blender Cyclesのサンライト(Sun)の値に442を入れ、バックグラウンド(青空)として、背景光に29を入れれば、物理的に正しい明るさの世界になります。</p>



<h2 class="wp-block-heading"><span id="toc2">PBRとは</span></h2>



<p>PBR(Physically Based Rendering)マテリアルは現実を忠実に(物理法則に従うように)再現されています。</p>



<div class="wp-block-cocoon-blocks-sticky-box blank-box block-box sticky">
<p>

2012年に、Disneyが新たな概念のシェーダーを<a href="https://disney-animation.s3.amazonaws.com/library/s2012_pbs_disney_brdf_notes_v2.pdf">発表しました</a>。&#8221;<strong>Disney principled BRDF</strong>&#8220;と呼ばれるもので、現実世界の物質は、粗さ(Roughness)と金属さ(Metalness)の2つで数値化出来るという基礎概念を発表したものです。<a href="http://project-asura.com/blog/archives/1972">日本語に翻訳している方</a>もいるようなので、論文を読まれてもいいかもしれません。その後2015年に、それを拡張し、Disney principled BRDFに鏡面反射BSDF (反射+透過)とより正確な表面下散乱を統合したDisney BSDFを<a href="https://blog.selfshadow.com/publications/s2015-shading-course/burley/s2015_pbs_disney_bsdf_notes.pdf">発表しました</a>。こちらも<a href="http://project-asura.com/blog/archives/2175">和訳されています</a>ので、参考にされるととても良い勉強になると思います。ソースコード類も、<a href="https://github.com/wdas">Walt Disney Animation Studios公式GitHub</a>に実装されているようです。

</p>
</div>



<p>現実世界の物質は、粗さ(Roughness)と金属さ(Metalness)の2つで数値化出来るという概念は、<strong>ラフネス/メタルネス・ワークフロー(Roughness/Metalness Workflow)</strong>と呼ばれています。<br><br>PBRは現実的なふるまいをするので、<span class="marker">このマテリアルが適用されたオブジェクト</span>を、現実の物理法則に従う環境に配置し、現実の物理法則に従う(仮想)<span class="marker">カメラで撮影(レンダリング)</span>すれば、理論的には<span class="marker">実写と変わりない</span>画像が得られることになります。</p>



<div class="wp-block-cocoon-blocks-sticky-box blank-box block-box sticky">
<p><strong>これがCGの世界を変えました</strong>。従来、現実の物理法則をザックリとマネ（荒い近似）していたので、リアリティのある画像を得るために、場合に応じてマテリアルをいじったり、ライトを足したり、明るさを調整したりと、ある意味「適当」に、いい感じの画像になるように調整する必要があったわけです。<br>PBRの考え方では、CG世界のすべてを物理法則に従った形にしたことによって、リアリティのある画像を得るために、<span class="marker">変な調整をする必要がなくなりました</span>。現実と同じシチュエーションを用意すれば、現実的に破綻のない（CGくさくない）画像が得やすくなりました。 </p>
</div>



<p>BlenderのCyclesレンダラーにも、Disney BSDFを実装した、&#8221;<strong>Principled BSDF</strong>&#8220;シェーダが、バージョン2.79にて実装されました。PBRなVolumeシェーダーとして、&#8221;<strong>Principled Volume</strong>&#8220;シェーダも、バージョン2.79最新ビルドにて実装されています。ちなみに、Principled BSDFについてはBlender GuruのAndrew Price氏の動画でとってもわかりやすく解説されているので、使い方はそちらを御覧ください。<br>Blender2.8に関しては、デフォルトのシェーダーがPrincipled BSDFになっていますし、Volumeシェーダーを使う場合はPrincipled Volumeを使えば、マテリアルに関しては完全にPBRになります。</p>



<div class="wp-block-columns has-2-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image"><img loading="lazy" decoding="async" width="523" height="647" src="https://cgbeginner.net/wp-content/uploads/2019/05/principled_bsdf.png" alt="" class="wp-image-1348" srcset="https://cgbeginner.net/wp-content/uploads/2019/05/principled_bsdf.png 523w, https://cgbeginner.net/wp-content/uploads/2019/05/principled_bsdf-243x300.png 243w" sizes="(max-width: 523px) 100vw, 523px" /><figcaption class="wp-element-caption">Principled BSDF</figcaption></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image"><img loading="lazy" decoding="async" width="508" height="388" src="https://cgbeginner.net/wp-content/uploads/2019/05/principled_volume.png" alt="" class="wp-image-1349" srcset="https://cgbeginner.net/wp-content/uploads/2019/05/principled_volume.png 508w, https://cgbeginner.net/wp-content/uploads/2019/05/principled_volume-300x229.png 300w" sizes="(max-width: 508px) 100vw, 508px" /><figcaption class="wp-element-caption">Principled Volume</figcaption></figure>
</div>
</div>



<figure class="wp-block-embed aligncenter is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" class="youtube-player" width="1456" height="819" src="https://www.youtube.com/embed/4H5W6C_Mbck?version=3&#038;rel=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;fs=1&#038;hl=ja&#038;autohide=2&#038;wmode=transparent" allowfullscreen="true" style="border:0;" sandbox="allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox"></iframe>
</div></figure>



<p>これにてPBRは安心、なわけですが、まだ重要なものがあります。「<strong>環境</strong>」です。</p>



<h2 class="wp-block-heading"><span id="toc3">物理的に正しい&#8221;明るさ&#8221;</span></h2>



<p>CGにおいても現実でも、何もない世界にモノを一つ置いても、「光源」がなければ「見る」ことはできません。すべてのモノは、光源がないと確認できないのです。CGにおいても、ライトが必要です。<br>ここで残念なのが、Blender Cyclesのライトは、&#8221;Strength&#8221;(強さ)に「単位」が書いていないことです。<br><strong>物理的に正しい明るさ(Physically Correct Brightness)</strong>を設定できないと、真のPBRは達成されません。現実でも、部屋の照明が、<span class="marker">マッチの火レベルの明るさ</span>の環境と、<span class="marker">夏場の太陽レベルの明るさ</span>の環境では明らかに違います。いくらマテリアルが物理的に正しくても、ライトが物理的に正しい(環境に即している)明るさになっていない場合、正しくない結果が得られる場合があります。Johnson Martin氏の<a href="https://blendergrid.com/news/cycles-physically-correct-brightness">書いた記事</a>がかなり詳しく解説しているので、本記事は、その記事をベースに書いています。</p>



<div class="wp-block-cocoon-blocks-sticky-box blank-box block-box sticky">
<p>正直なところ、未だによくわからない部分もあります。また随時更新をする予定です。 気になる点があれば教えてください。 </p>
</div>



<h3 class="wp-block-heading"><span id="toc4">Cyclesライトの明るさの単位</span></h3>



<p><a href="https://docs.blender.org/manual/en/dev/render/cycles/nodes/types/shaders/emission.html">公式ドキュメント</a>によれば、SunとMeshランプの&#8221;強さ(Strength)&#8221;は、<strong>&#8220;irradiance (放射照度)&#8221;</strong>という単位です。(他のライトタイプでは違うらしいですが、詳細は不明です。正直、SunとMeshさえあれば問題ありません)</p>



<h3 class="wp-block-heading"><span id="toc5">放射照度 Irradiance</span></h3>



<p><strong>irradiance(放射照度)</strong>は、SI単位(世の中で一般的に使われる単位のこと)では、ワット毎平方メートル(W/m<sup>2</sup>)が使われます。このirradianceは、単位面積あたりのエネルギーを表しています。<br><br>しかしこのままでは扱いにくいので、一般的に照明の明るさとしての指標となる&#8221;<strong>illuminance(照度)</strong>&#8220;に変換します。<br></p>



<h3 class="wp-block-heading"><span id="toc6">照度 Illuminance</span></h3>



<p>illuminanceの単位はLux(ルクス)です。ルクスは、SI単位でルーメン毎平方メートル(lm/m<sup>2</sup>)とされる単位で、より身近に使われる単位のため、扱いやすくわかりやすいです。この、irradianceからilluminanceへの変換はシンプルではありません。光は波長ごとに持つエネルギーが違うからです。<br><br>そこで、ヒトが最も明るく感じる色を基準にします。<a href="https://en.wikipedia.org/wiki/Luminosity_function">Luminosity function</a> (<a href="https://ja.wikipedia.org/wiki/%E6%AF%94%E8%A6%96%E6%84%9F%E5%BA%A6">比視感度</a>) の最大値は、555.0 nm(緑色)なので、この555.0 nmを基準に考えます。この波長のとき、</p>



<p class="has-text-align-center">1.000 W/m<sup>2</sup> = 683.0 Lux</p>



<p>と<a href="https://en.wikipedia.org/wiki/Lux#Relationship_between_illuminance_and_irradiance">なります</a>。厳密にはこれは概算になります。なぜなら、電磁波(光)はいろいろな波長を含んでいるので、そんなに単純に変換することはできないからです。ただ、ヒトが目で見える範囲の波長はごく短い範囲なので、555.0nmという、可視スペクトルの最も一般的な波長を使用することで十分といえます。</p>



<div class="wp-block-cocoon-blocks-sticky-box blank-box block-box sticky">
<p>ちなみに、上式から、&#8221;1Wのエネルギーから683Luxの照度を得ることができる&#8221;と捉える事もできますが、あくまで理論値であり、エネルギーを完全に緑色光に変換できればそうなるということです。ちなみに、白熱電球ではエネルギーの2%ほどしか光に変えることができません。</p>
</div>



<p>逆に、LuxからW/m<sup>2</sup>の変換も、上式を変形することで行うことができます。</p>



<p class="has-text-align-center">1.000 Lux = 0.001464 W/m<sup>2</sup></p>



<p><strong>したがって、照度計(ルクス計)を使って現実世界で測った数値(Lux)に、0.001464をかけると、Blender Cyclesでのライトの単位(W/m</strong><sup><strong>2</strong></sup><strong>)に変換できることになります。</strong></p>



<h3 class="wp-block-heading"><span id="toc7">JIS照度基準</span></h3>



<p>現実世界の照明の照度(Lux)は、<a href="https://lighting.gs-yuasa.com/LE/doc/pdf/doc-6jis.pdf">JIS照度基準</a>(JIS照明基準)がとても参考になります。<br>表の左側、lxの部分を活用できます。</p>



<div class="wp-block-columns has-2-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image is-resized"><img loading="lazy" decoding="async" width="700" height="607" src="https://cgbeginner.net/wp-content/uploads/2019/05/jis_lighting_levels1.jpg" alt="" class="wp-image-1338" style="width:458px;height:397px" srcset="https://cgbeginner.net/wp-content/uploads/2019/05/jis_lighting_levels1.jpg 700w, https://cgbeginner.net/wp-content/uploads/2019/05/jis_lighting_levels1-300x260.jpg 300w" sizes="(max-width: 700px) 100vw, 700px" /></figure>



<p></p>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image is-resized"><img loading="lazy" decoding="async" width="700" height="607" src="https://cgbeginner.net/wp-content/uploads/2019/05/jis_lighting_levels2.jpg" alt="" class="wp-image-1339" style="width:459px;height:398px" srcset="https://cgbeginner.net/wp-content/uploads/2019/05/jis_lighting_levels2.jpg 700w, https://cgbeginner.net/wp-content/uploads/2019/05/jis_lighting_levels2-300x260.jpg 300w" sizes="(max-width: 700px) 100vw, 700px" /></figure>
</div>
</div>



<p>表は<a href="http://www.hikariiku.com/think_of_as/1116/">光育.com</a>より。</p>



<h2 class="wp-block-heading"><span id="toc8">物理的に正確な太陽モデル</span></h2>



<p>最も一般的な光源といえば太陽でしょう。ということで、この理屈を使って、物理的に正確な太陽モデルを考えてみましょう。<a href="https://ja.wikipedia.org/wiki/%E5%A4%AA%E9%99%BD%E5%AE%9A%E6%95%B0">太陽定数</a>(<a href="https://en.wikipedia.org/wiki/Solar_constant">solar constant</a>)という、実際に観測されたデータから導かれた値では、地球大気表面が受ける単位時間あたりのエネルギー量は 約1366 W/m<sup>2</sup> にあたるとされています(これは最大値で、太陽が天頂にある場合)。このうち、おおよそ20～30％が、大気中での散乱、雲による反射などで宇宙空間に逃げ、残る80～70％が地球表面に到達します。今回は、参考にしたウェブサイトの数値に合わせて、82％が地球表面に到達すると考えます。またこの82%のうち、直接光(direct light)が77%、間接光(indirect light)が5%となります。</p>



<figure class="wp-block-image aligncenter is-resized"><img loading="lazy" decoding="async" width="940" height="561" src="https://cgbeginner.net/wp-content/uploads/2019/05/energy_of_sun_earth_atmosphere.png" alt="" class="wp-image-1340" style="aspect-ratio:562/335" srcset="https://cgbeginner.net/wp-content/uploads/2019/05/energy_of_sun_earth_atmosphere.png 940w, https://cgbeginner.net/wp-content/uploads/2019/05/energy_of_sun_earth_atmosphere-300x179.png 300w, https://cgbeginner.net/wp-content/uploads/2019/05/energy_of_sun_earth_atmosphere-768x458.png 768w" sizes="(max-width: 940px) 100vw, 940px" /></figure>



<p>次に、太陽から注がれる電磁波のエネルギーのうち、どのくらいが可視光線なのかを考える必要があります。見えない光は、CGレンダリングでは考える必要はありませんからね。Wikipediaの<a href="https://en.wikipedia.org/wiki/Sunlight">Sunlight</a>のページにあるSpectrum of Solar Radiationのグラフを示します。</p>



<figure class="wp-block-image aligncenter is-resized"><img loading="lazy" decoding="async" width="1024" height="768" src="https://cgbeginner.net/wp-content/uploads/2019/05/1280px-Solar_spectrum_en.svg_-1024x768.png" alt="" class="wp-image-1320" style="aspect-ratio:439/329" srcset="https://cgbeginner.net/wp-content/uploads/2019/05/1280px-Solar_spectrum_en.svg_-1024x768.png 1024w, https://cgbeginner.net/wp-content/uploads/2019/05/1280px-Solar_spectrum_en.svg_-300x225.png 300w, https://cgbeginner.net/wp-content/uploads/2019/05/1280px-Solar_spectrum_en.svg_-768x576.png 768w, https://cgbeginner.net/wp-content/uploads/2019/05/1280px-Solar_spectrum_en.svg_.png 1280w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Figure 1. 太陽光のスペクトル分布</figcaption></figure>



<p>この図の可視光(Visible)部分を積分すれば、可視光部分のエネルギーが得られます。<a href="https://www.e-education.psu.edu/eme812/node/643">John A. Dutton e-Education Instituteのページ</a>によれば、太陽光のうち、</p>



<ul class="wp-block-list">
<li>赤外光 (700nm以上)        : 52~55%</li>



<li>可視光 (400nm～700nm) : 42~43%</li>



<li>紫外光 (100nm~400nm) : 3~5%</li>
</ul>



<p>となっています。以下の図(スペクトラム)のうち、オレンジ色で塗ってある部分が太陽が放出している波長帯ですね。</p>



<figure class="wp-block-image aligncenter is-resized"><img loading="lazy" decoding="async" width="475" height="700" src="https://cgbeginner.net/wp-content/uploads/2019/05/spectrum_of_solar_radiation.jpg" alt="" class="wp-image-1341" style="aspect-ratio:388/572" srcset="https://cgbeginner.net/wp-content/uploads/2019/05/spectrum_of_solar_radiation.jpg 475w, https://cgbeginner.net/wp-content/uploads/2019/05/spectrum_of_solar_radiation-204x300.jpg 204w" sizes="(max-width: 475px) 100vw, 475px" /></figure>



<p>ということで、太陽光のうち、42%が可視光となります。したがって、太陽エネルギー1366W /m^2のうち、</p>



<p class="has-text-align-center">直接光(direct light) = 1366×0.77×0.42=441.7644 W/m<sup>2</sup><br>間接光(indirect light) = 1366×0.05×0.42=28.686 W/m<sup>2</sup></p>



<p>となります。したがって、<span class="marker">Blender Cyclesのサンライト(Sun)の値に442を入れ、バックグラウンド(青空)として、背景光に29を入れれば、物理的に正しい明るさの世界になります。</span> ここで一つ問題があります。Blenderで上記の数値を適用して、そのままレンダリングすると、おそらく真っ白に飛んだ画像が得られることになります。これは、デフォルトのBlenderの露出管理が適切ではないためです。これを解決し、現実のカメラと同じような露出管理ができる機能が、バージョン2.79より搭載されました。その名も&#8221;<strong>Filmic Blender</strong>&#8221; ( &#8220;Filmic&#8221; )です。</p>



<h2 class="wp-block-heading"><span id="toc9">Filmic Color Management</span></h2>



<p>これはカラーマネジメントシステム(LUT)の一種です。Blender GuruのAndrew Price氏の動画でとってもわかりやすく解説されているので、参考として御覧ください。ファイルをダウンロードしている部分は、旧バージョン時代の話ですので、2.79以降であれば標準搭載されています。また、2.8であればデフォルト設定になっています。</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" class="youtube-player" width="1456" height="819" src="https://www.youtube.com/embed/m9AT7H4GGrA?version=3&#038;rel=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;fs=1&#038;hl=ja&#038;autohide=2&#038;wmode=transparent" allowfullscreen="true" style="border:0;" sandbox="allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox"></iframe>
</div></figure>



<h2 class="wp-block-heading"><span id="toc10">正しい「色」について</span></h2>



<p>いままで、明るさについて議論してきました。もう一つ照明の話で重要なものがあります。「色」です。色は、その光の波長で決定されます。555nmが緑色といった形です。結論からいうと、現在のバージョンでは便利ノード&#8221;Blackbody&#8221;と&#8221;Wavelength&#8221;が実装されていますので、Blackbodyノードに色温度(K)を、もしくはWavelengthノードに波長(nm)を入れれば適切な色が出力されます。</p>



<div class="wp-block-columns has-2-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image"><img loading="lazy" decoding="async" width="417" height="111" src="https://cgbeginner.net/wp-content/uploads/2019/05/converter_node_english.png" alt="" class="wp-image-1358" srcset="https://cgbeginner.net/wp-content/uploads/2019/05/converter_node_english.png 417w, https://cgbeginner.net/wp-content/uploads/2019/05/converter_node_english-300x80.png 300w" sizes="(max-width: 417px) 100vw, 417px" /><figcaption class="wp-element-caption">Converterノード</figcaption></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image"><img loading="lazy" decoding="async" width="410" height="108" src="https://cgbeginner.net/wp-content/uploads/2019/05/converter_node_japanese.png" alt="" class="wp-image-1359" srcset="https://cgbeginner.net/wp-content/uploads/2019/05/converter_node_japanese.png 410w, https://cgbeginner.net/wp-content/uploads/2019/05/converter_node_japanese-300x79.png 300w" sizes="(max-width: 410px) 100vw, 410px" /><figcaption class="wp-element-caption">コンバーターノード</figcaption></figure>
</div>
</div>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1024" height="115" src="https://cgbeginner.net/wp-content/uploads/2019/05/Color_temperature-1024x115.png" alt="" class="wp-image-1346" srcset="https://cgbeginner.net/wp-content/uploads/2019/05/Color_temperature.png 1024w, https://cgbeginner.net/wp-content/uploads/2019/05/Color_temperature-300x34.png 300w, https://cgbeginner.net/wp-content/uploads/2019/05/Color_temperature-768x86.png 768w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">色温度チャート</figcaption></figure>



<p>波長(Wavelength)ノードについては、以下のページで詳細に分析したので、合わせて御覧ください。</p>



<figure class="wp-block-embed-wordpress wp-block-embed is-type-wp-embed is-provider-cgbeginner"><div class="wp-block-embed__wrapper">

<a href="https://cgbeginner.net/wavelength-to-rgb/" title="光の波長をRGBに変換 [Blender Wavelength node]" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://cgbeginner.net/wp-content/uploads/2019/02/blender-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://cgbeginner.net/wp-content/uploads/2019/02/blender-160x90.png 160w, https://cgbeginner.net/wp-content/uploads/2019/02/blender-300x168.png 300w, https://cgbeginner.net/wp-content/uploads/2019/02/blender-120x68.png 120w, https://cgbeginner.net/wp-content/uploads/2019/02/blender-320x180.png 320w, https://cgbeginner.net/wp-content/uploads/2019/02/blender.png 600w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">光の波長をRGBに変換 [Blender Wavelength node]</div><div class="blogcard-snippet internal-blogcard-snippet">我々が見ている「色」は、実際は異なる波長の光が混ざりあったものですが、CGレンダリングでは通常波長は考慮しません。（一部のレンダラーは波長まで考慮するものがあるそうですが、少なくともBlender cyclesレンダラーは波長を考慮しません...</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://cgbeginner.net" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">cgbeginner.net</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2019.11.02</div></div></div></div></a>
</div></figure>



<h2 class="wp-block-heading"><span id="toc11">参考サイト</span></h2>



<p>!https://www.reddit.com/r/blender/comments/4i3j2c/realworld_lighting_values_for_cycles_lights/<br>!https://www.reddit.com/r/askscience/comments/4ia1t8/why_does_color_fade_when_left_in_sunlight_for/d2we7p6/<br> !https://blenderartists.org/t/lighting-cycles-watts-lux-etc/614524<br> !https://blender.stackexchange.com/questions/261/what-are-the-differences-between-lamps-in-cycles-and-blender-internal<br> !https://blender.stackexchange.com/questions/45209/what-kind-of-units-does-the-cycles-emission-strength-use<br> !https://academo.org/demos/wavelength-to-colour-relationship/<br> !http://www.efg2.com/Lab/ScienceAndEngineering/Spectra.htm<br> !http://www.midnightkite.com/color.html</p>
]]></content:encoded>
					
					<wfw:commentRss>https://cgbeginner.net/blender-cycles-physically-correct-brightness/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1295</post-id>	</item>
		<item>
		<title>静止ノイズを無くす方法 [Blender Cycles]</title>
		<link>https://cgbeginner.net/blender-cycles-rid-static-noise/</link>
					<comments>https://cgbeginner.net/blender-cycles-rid-static-noise/#respond</comments>
		
		<dc:creator><![CDATA[CGBeginner]]></dc:creator>
		<pubDate>Sun, 24 Feb 2019 05:30:06 +0000</pubDate>
				<category><![CDATA[Blender]]></category>
		<category><![CDATA[CG]]></category>
		<guid isPermaLink="false">https://cgbeginner.net/?p=1262</guid>

					<description><![CDATA[目次 1点にとどまり続けるノイズノイズがとどまる理由ノイズパターンが変化するようにする参考サイト 1点にとどまり続けるノイズ BlenderのCyclesでレンダリングする際のお話です。 こんな映像をレンダリングしました [&#8230;]]]></description>
										<content:encoded><![CDATA[
  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-20" checked><label class="toc-title" for="toc-checkbox-20">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">1点にとどまり続けるノイズ</a></li><li><a href="#toc2" tabindex="0">ノイズがとどまる理由</a></li><li><a href="#toc3" tabindex="0">ノイズパターンが変化するようにする</a></li><li><a href="#toc4" tabindex="0">参考サイト</a></li></ol>
    </div>
  </div>

<h2><span id="toc1">1点にとどまり続けるノイズ</span></h2>
<p>BlenderのCyclesでレンダリングする際のお話です。</p>
<p>こんな映像をレンダリングしました。</p>
<p><div style="width: 640px;" class="wp-video"><video class="wp-video-shortcode" id="video-1262-1" width="640" height="480" preload="metadata" controls="controls"><source type="video/mp4" src="https://cgbeginner.net/wp-content/uploads/2019/02/static.mp4?_=1" /><a href="https://cgbeginner.net/wp-content/uploads/2019/02/static.mp4">https://cgbeginner.net/wp-content/uploads/2019/02/static.mp4</a></video></div></p>
<p>ノイズ部分を拡大した動画が以下です。</p>
<p><div style="width: 640px;" class="wp-video"><video class="wp-video-shortcode" id="video-1262-2" width="640" height="480" preload="metadata" controls="controls"><source type="video/mp4" src="https://cgbeginner.net/wp-content/uploads/2019/02/staticzoom.mp4?_=2" /><a href="https://cgbeginner.net/wp-content/uploads/2019/02/staticzoom.mp4">https://cgbeginner.net/wp-content/uploads/2019/02/staticzoom.mp4</a></video></div></p>
<p>カメラが動いているのに、ノイズだけ止まっているように見えると思います。これは現実のカメラで撮影した映像には見られない現象です。つまり、こんなことが起こっているとCG臭くなってしまうということです。</p>
<p>現実のノイズは、フレームごとにバラバラで、動画にすると、細かい点が暴れまわっているように見えるはずです。</p>
<p>以下の動画が完成形です。ノイズが動き続けて、自然な形になっています。ちなみに、明るい点がチラチラしているのは、Firefliesと言い、サンプリング数が少なすぎることによるノイズです。今回はこちらは無視します。</p>
<p><div style="width: 640px;" class="wp-video"><video class="wp-video-shortcode" id="video-1262-3" width="640" height="480" preload="metadata" controls="controls"><source type="video/mp4" src="https://cgbeginner.net/wp-content/uploads/2019/02/dynamic.mp4?_=3" /><a href="https://cgbeginner.net/wp-content/uploads/2019/02/dynamic.mp4">https://cgbeginner.net/wp-content/uploads/2019/02/dynamic.mp4</a></video></div></p>
<p><div style="width: 640px;" class="wp-video"><video class="wp-video-shortcode" id="video-1262-4" width="640" height="480" preload="metadata" controls="controls"><source type="video/mp4" src="https://cgbeginner.net/wp-content/uploads/2019/02/dynamiczoom.mp4?_=4" /><a href="https://cgbeginner.net/wp-content/uploads/2019/02/dynamiczoom.mp4">https://cgbeginner.net/wp-content/uploads/2019/02/dynamiczoom.mp4</a></video></div></p>
<h2><span id="toc2">ノイズがとどまる理由</span></h2>
<p>BlenderCyclesのサンプリングの仕組みに理由があります。</p>
<p>Cyclesでは、光の道筋を計算するためにPath tracing(パストレーシング)という手法を使っています。このパストレーシングは、Monte Carlo Method(モンテカルロ法)と呼ばれる、乱数をベースにした手法を使っています。したがって、このノイズたちのパターンは、モンテカルロ法に使う乱数によって決まります。</p>
<p>つまり、乱数を変更すると、ノイズパターンが変わります。乱数を制御するパラメータが&#8221;Seed&#8221;(シード)です。ここを変更すると乱数が変わります。ちなみに、このシード値の数字自体に意味はありません。乱数を発生させるためだけに使う数字なのでなんでもいいです。重要なのは、同じシード値で計算された画像には、同じノイズパターンが現れるということです。</p>
<p>実写映像のノイズは、次の動画が参考になります。</p>
<p><iframe loading="lazy" class="youtube-player" width="1456" height="819" src="https://www.youtube.com/embed/ijCaCFqc_MA?version=3&#038;rel=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;fs=1&#038;hl=ja&#038;autohide=2&#038;wmode=transparent" allowfullscreen="true" style="border:0;" sandbox="allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox"></iframe></p>
<h2><span id="toc3">ノイズパターンが変化するようにする</span></h2>
<p>サンプリングの設定は、レンダリングタブのサンプリングの項目にあります。</p>
<p><a href="https://cgbeginner.net/wp-content/uploads/2019/02/SamplingTab.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1266" src="https://cgbeginner.net/wp-content/uploads/2019/02/SamplingTab.png" alt="" width="336" height="239" srcset="https://cgbeginner.net/wp-content/uploads/2019/02/SamplingTab.png 336w, https://cgbeginner.net/wp-content/uploads/2019/02/SamplingTab-300x213.png 300w" sizes="(max-width: 336px) 100vw, 336px" /></a></p>
<p>私は普段英語表示のまま使っていますが、日本語の場合、こんな感じです。</p>
<p><a href="https://cgbeginner.net/wp-content/uploads/2019/02/SamplingTabJa.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1267" src="https://cgbeginner.net/wp-content/uploads/2019/02/SamplingTabJa.png" alt="" width="291" height="240"></a></p>
<p>シード値がフレームごとに変化するようにすればいいです。<br />
最も簡単な方法は、この時計マークをクリックしてオンにすることです。この機能の説明がそのままツールチップに載っていました。</p>
<p><a href="https://cgbeginner.net/wp-content/uploads/2019/02/SamplingTabTipsJa.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1269" src="https://cgbeginner.net/wp-content/uploads/2019/02/SamplingTabTipsJa.png" alt="" width="400" height="235" srcset="https://cgbeginner.net/wp-content/uploads/2019/02/SamplingTabTipsJa.png 400w, https://cgbeginner.net/wp-content/uploads/2019/02/SamplingTabTipsJa-300x176.png 300w" sizes="(max-width: 400px) 100vw, 400px" /></a></p>
<p>&nbsp;</p>
<p>押すとこんな感じになります。</p>
<p><a href="https://cgbeginner.net/wp-content/uploads/2019/02/SamplingTabOn.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1268" src="https://cgbeginner.net/wp-content/uploads/2019/02/SamplingTabOn.png" alt="" width="292" height="238"></a></p>
<p>ちなみに、インターフェースが大きく変わったBlender2.8でも概ね同じ場所にあります。Samplingタブの中の、Advancedタブの中に項目がありました。</p>
<p><a href="https://cgbeginner.net/wp-content/uploads/2019/02/SamplingTab28.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1275" src="https://cgbeginner.net/wp-content/uploads/2019/02/SamplingTab28.png" alt="" width="357" height="430" srcset="https://cgbeginner.net/wp-content/uploads/2019/02/SamplingTab28.png 357w, https://cgbeginner.net/wp-content/uploads/2019/02/SamplingTab28-249x300.png 249w" sizes="(max-width: 357px) 100vw, 357px" /></a></p>
<p>もう一つの方法は、Driversという機能を使って、フレーム番号をそのままシード値に使ってしまうという方法です。</p>
<p><a href="https://cgbeginner.net/wp-content/uploads/2019/02/SamplingTabAddDrivers.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1270" src="https://cgbeginner.net/wp-content/uploads/2019/02/SamplingTabAddDrivers.png" alt="" width="296" height="239"></a></p>
<p>シードの部分に、#frameと入力してエンターを押します。するとボックスが紫になり、フレーム番号とシード値が連動するようになります。昔は上の時計マークがなかったらしく、この方法しかなかったようです。あとは手動でキーフレームアニメーションさせるくらいですかね。</p>
<p><a href="https://cgbeginner.net/wp-content/uploads/2019/02/SamplingTabDrivers.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1271" src="https://cgbeginner.net/wp-content/uploads/2019/02/SamplingTabDrivers.png" alt="" width="290" height="238"></a></p>
<p>無事、現実世界と同様な、動くノイズになりました。</p>
<p><div style="width: 640px;" class="wp-video"><video class="wp-video-shortcode" id="video-1262-5" width="640" height="480" preload="metadata" controls="controls"><source type="video/mp4" src="https://cgbeginner.net/wp-content/uploads/2019/02/dynamic.mp4?_=5" /><a href="https://cgbeginner.net/wp-content/uploads/2019/02/dynamic.mp4">https://cgbeginner.net/wp-content/uploads/2019/02/dynamic.mp4</a></video></div></p>
<p><div style="width: 640px;" class="wp-video"><video class="wp-video-shortcode" id="video-1262-6" width="640" height="480" preload="metadata" controls="controls"><source type="video/mp4" src="https://cgbeginner.net/wp-content/uploads/2019/02/dynamiczoom.mp4?_=6" /><a href="https://cgbeginner.net/wp-content/uploads/2019/02/dynamiczoom.mp4">https://cgbeginner.net/wp-content/uploads/2019/02/dynamiczoom.mp4</a></video></div></p>
<p>とここまで書いてあれですが、ドンピシャなチュートリアルビデオがあったので貼っておきます。こっちのほうがわかりやすい説すらあります。</p>
<p><iframe loading="lazy" class="youtube-player" width="1456" height="819" src="https://www.youtube.com/embed/FrX2CPnqu4I?version=3&#038;rel=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;fs=1&#038;hl=ja&#038;autohide=2&#038;wmode=transparent" allowfullscreen="true" style="border:0;" sandbox="allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox"></iframe></p>
<h2><span id="toc4">参考サイト</span></h2>
<p>!https://en.wikipedia.org/wiki/Path_tracing<br />
https://en.wikipedia.org/wiki/Monte_Carlo_method<br />
https://docs.blender.org/manual/en/latest/render/cycles/settings/scene/render/integrator.html#sampling<br />
https://blenderartists.org/t/static-noice-in-renders/595690</p>
]]></content:encoded>
					
					<wfw:commentRss>https://cgbeginner.net/blender-cycles-rid-static-noise/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://cgbeginner.net/wp-content/uploads/2019/02/static.mp4" length="2417929" type="video/mp4" />
<enclosure url="https://cgbeginner.net/wp-content/uploads/2019/02/staticzoom.mp4" length="1554363" type="video/mp4" />
<enclosure url="https://cgbeginner.net/wp-content/uploads/2019/02/dynamic.mp4" length="5788918" type="video/mp4" />
<enclosure url="https://cgbeginner.net/wp-content/uploads/2019/02/dynamiczoom.mp4" length="2429307" type="video/mp4" />

		<post-id xmlns="com-wordpress:feed-additions:1">1262</post-id>	</item>
	</channel>
</rss>
