頂点カラーをランダムに付与するBlenderスクリプト

前のライフル作る時に思いついて、Chat-GPTで作ったスクリプト。

ZBrushでもできる機能なんだけど、個別のメッシュごとに頂点カラーをランダムに割り当てる処理。
ハイポリでこれをやっておき、SubstancePainterとかでベイクする際に、頂点カラーをカラーIDマップとしてベイクしておけば、素材違いのレイヤごとにカラーマスクを指定できるわけ。
マスク処理に便利なはず。

使い方は簡単。新規スクリプトで↑をコピペし、対象メッシュを複数選択して実行。ランダムな色が気に入らなければ再実行。部分的に同じ色にしたい場合はメッシュを結合して行えばいい。

import bpy
import random

def assign_random_vertex_colors(obj):
    mesh = obj.data
    if not mesh.vertex_colors:
        mesh.vertex_colors.new()

    color_layer = mesh.vertex_colors.active
    r, g, b = [random.random() for _ in range(3)]  # Generate a single random color

    for poly in mesh.polygons:
        for loop_index in poly.loop_indices:
            color_layer.data[loop_index].color = r, g, b, 1.0  # Set alpha to 1.0

for obj in bpy.context.selected_objects:
    if obj.type == 'MESH':
        assign_random_vertex_colors(obj)

色を確認したい場合はこの表示設定で。

ライフル制作6

アニメーション作ってますねえ。
右手が本体に追従したり、交換したマガジンも本体に追従するのはボーンコンストレイントのチャイルドを使ってます。レンダリングは全てEeveeです。

①射撃モードを変えるレバー(反対側にもあり)
②マガジンを出すボタン(反対側にもあり)
 電気制御でマガジンの固定が外れ自重で落ちる仕組み。
 誤操作しそうなのでガードする部品付けたほうがいいかも。
③ボルトリリースレバー
④②の予備的なマガジンを出せるようにするボタン
⑤何か接続できる拡張ポート。
⑥コッキングレバー
 青いのが外側を向くことでロックが外れて動かせる。

Core i7 1270

https://www.cpu-monkey.com/ja/compare_cpu-amd_ryzen_threadripper_1950x-vs-intel_core_i7_12700

買い替え検討したけど、まだ1950xでいいやって思えてしまう。まだDDR4使えるんだ・・・。

銅プレート

RTX3080を使ってますが、メモリの冷却はサーマルパッドではなく銅プレートがおすすめです。1年くらい経ってますが性能の低下などはありません。


そもそもサーマルパッドが金属よりも熱伝導が劣るにもかかわらず追加で使用される理由は、GPUとメモリが別々にはんだ付けされているためです。基板上でメモリとCPUの高さを完全に合わせる設計や製造は困難であり、製造ラインやロットの違いによっても高さが一定に保たれるのが難しからだと勝手に予想してます。サーマルパッドは柔軟性があり、このような不確かな高さの違いを柔軟に吸収し、緩和することができます。

でもメモリが引くくらい熱いので、そんな理由も克服し銅プレートを使っているのです。
で、やはり難しいのは使う銅プレートの厚みで、最終的にGPUと銅プレートを載せた状態の高さが一緒にならないといけず、私は2回買いました。1回目は明らかにGPUが冷えず動作クロック落としてましたね。私はGAINWARD製のRTX3080で、1.8mmでバッチリでした。

買ったところは、またしてもアリエクです。

1回目で買ったところ。確か2.0mmだったような。
抵抗に貼るシールが必要以上に付属して解説も載ってるけど、残念ながら厚みが合わなかった。クーラー載せる前にまっすぐなものを載せてGPUとメモリ側の両方に隙間が無いか要チェックです。
https://ja.aliexpress.com/item/1005004665826701.html

2回目買ったところは厚さ指定できた。テープは付属するのか謎なので別で手配でいいかも。
https://ja.aliexpress.com/item/1005004741999150.html

結果確認として、Furmarkをぶん回しても温度差を比較。
見よこの効果を・・・。

Before:100度行っちゃいますよね。

After:マイナス22度。GPUが少し上がってるのはメモリを冷やせている影響かと。

まあでも、速度は全く変わりませんでしたけどね。

激安10G LANカードでNASを高速化

個人的に、作業用データはPCではなく常にTrueNASというOSのNAS PCで管理しています。理由は以下。
 ・NASは起動しっぱなしなので、スマホの写真データとかの自動バックアップができる。
 ・NAS内部でディスクの冗長化とステータス監視、別領域へバックアップも自動でできるので安心。
 ・スナップショットにより、誤って上書きしたファイルをPCから簡単に巻き戻すことができる。
 ・ごみ箱もある。

メインPCとNASが通信できるネットワークは全体含めこんな感じ。全てLANケーブル。

まず前提として、NAS側はRealtek RTL8125BGというチップを使った2.5GのLANカードを使っており、PC側は10G対応のバッファロLGY-PCIE-MG2を使ってます。PCとNASはバッファロのLXW-10G2/2G4というハブを経由しており、このハブは10Gポートが2つ、2.5Gポートが4つという構成で、PCとNASをそれぞれ同じ速度のポートに接続。10Gポートはカスケード元との接続もあるので2つとも埋まります。

で、この接続方法だとPCとNASのアクセス速度がMAX2.5Gで頭打ちになり、内臓ディスクより明らかに読み込みや書き込みが遅いんだろうな・・・と前々から思っていたので、今回はこれをかなりお安く改善できた話です。

ちょっと話がそれますが、10GのLANは以下の理由で結構扱い辛いです。
==============================================

①ハードが高い。
 ハブ、LANアダプタ共に、バカ高くなる。ただしSFPの接続形態はそうでもないみたい。

②発熱がやばい
 内臓LANアダプタもそうだけど、ハブも発熱がやばい。 LXW-10G2/2G4は冷やさないとまともに動いてくれない。

みんなも試行錯誤している様子。
https://kakaku.com/item/K0001210732/picture/
自分のもこんな感じに蓋を外してヒートシンクにUSBファンを当ててます。ヒートシンクと基盤の間は金属のスペーサーが入ってるので、結束バンドでしっかり固定しても大丈夫。遅い回転数でも全然冷えます。

③当たりはずれが多い
 LGY-PCIE-MG2はまれに通信できなくなる現象が発生し、デバイスマネージャから無効化→有効化しないと復帰できなくなる現象が有名っぽく、自分のも何度か経験しました。ファームウェアを他社製品のに上書きしたり色々したけど改善されず。バッファロのNW機器はWiFi以外お勧めできません。
==============================================

で、PCとNASを10Gbpsで接続するには、通常10Gのポートがもう少し多い又は全ポート10Gくらいのハブに変える必要があるのだけれど、もっと安い方法で対応できる方法を探しました。

ハブを買い替えなくてもいいよう、PCとNASのLANをもっと安定した10G×2のものに買い替えて、それぞれ片方のポートで直接繋げる方式を取ります。

LANボードはAmazonじゃなくAlieExpressでIntelのX540-AT2のボードを買いました。

これが信じられないくらい安いけど、以下のデメリットがあります。
 ・世代が古いので100m, 1G, 10Gにしか対応せず、近年で始めた2.5Gや5Gの機器相手には1Gの速度になる。
 ・古いのでIntelのドライバがWindows11に正式に対応していない。
  (Win10用ドライバを手動でインストールすることでWin11でも問題なく使えます。)
 ・AlieExpressのこの新品ではない(HP, Dell製のは新品なのかそれなりの値段)

NASはLinuxベースのTrueNASなのですが、こちらは増設するだけで自動で使える状態になってました。ちなみにこのブログを書くずっと前にFWサーバー(Sohos)のPCにもX540-AT2を使ってます。こっちはIntel純正(のはず)の製品。ヒートシンクを外すと、LANチップとは思えない見た目の、CPUみたいなピカピカなチップであることを確認済み。

CPUかGPUかな?っていうくらいダイがでかすぎるんだよ・・・。

本体内のエアフローが強烈なラックマウントのサーバはともかく、デスクトップPCは絶対ファンを付けないとLANチップが熱暴走して機能しなくなります。後継のチップはだいぶ改善されてるらしいです。

で、今回の2枚が届いたのでチェック。紙袋に固めの透明ケースに入っているのみで、非常に梱包はシンプル。金具やコネクタはピカピカだけどが基盤は明らかに中古です。

ボードのメーカーはInspurというところです。Huaweiとかで古くなったサーバーから抜いたやつとかなのかなぁ・・・。

 株式会社インスパージャパン

 米政府、中国最大のサーバーメーカーInspurをブラックリストへ 

まあ、そういうわけです。

AlieExpressはSSDの容量詐欺などで有名だけど、NW機器に関しては通常の相場の製品もあり、外れは無さそう。ヒートシンクを外し固まっていた熱伝導シールを外し、同じチップであることを確認。グリスを塗って元のヒートシンクに戻します。

改めてちょっとしたCPUみたいな大きさのダイ。謎のジャンパピンも2つあります。

で、試しにファンを付けずPCに取り付けてドライバを入れて使える状態にし片方をハブに接続。NASとを直接接続するためにもう片方のポートに固定IP設定をした瞬間、PC側のLANアダプタが強制的に「無効」の状態に陥ってしまう現象が発生。有効化をしても言うことを聞かず。
一旦LANボードを外そうと端を持ってみると、耐えられないくらいの熱を持ってたので外せず。こうなると、PCを止めてボードを冷やして再起動の後、デバイスマネージャーから無効→有効をしないと復帰してくれない模様。

「いや、PC内のエアフローがダメなんじゃない?うちのPCのなら大丈夫だからw」とか思っている方はぜひファンレス挑戦してください。

これはNAS側ですが、PC側も結局こんな感じでファンを無理やりつけてます。結束バンドがすごい使える。

そしてPCとNASの接続構成はこうなります。PCとNASの間で新たに10G専用の接続が追加されてます。

ネットワークドライブの設定を新たな接続用に変更し、アクセス性能の変化をチェック。

Before(2.5G接続)

After(10G接続)

書き込みはいい感じに10Gの性能を出し切れている。NASはHDD x3でのRAID5の構成に加えて256GBのSSDをキャッシュにしているため、書き込みだけはLANの性能いっぱいまで出せる模様。読み込みが半分くらいなのは、SSDキャッシュは読み込み用に機能しないためHDD(WD青5600rpm)性能の限界が影響しているのかなと。
小さなサイズの書き込み性能が前より低下しているけど、これはLANをジャンボパケットに対応させバッファも増やした影響だと思う。これに関しては、ログや微小なファイルを継続的に書き込みながら処理を進めるとか特殊なケースがなければ気にしなくていいと思う。

最終的にZBrushやSubstancePainterのプロジェクト保存時間が明らかに短くなったので満足。

ライフル制作5

大体できてきました。

しんどいですけど、微細な丸みを含んだエッジや細かな凹凸も再現したハイポリ版を一度作って、ローポリを改めて作ってベイクしたほうが結果的に絶対良いです。SubstancePainterでも曲面マップ等が作れるのでマテリアル作成が捗ります。

今回ハイポリはPlasticityで作りました。ハードサーフェイス系では絶対おすすめです。