
SEKKEIYA
2025/12/26
By SEKKEIYA
表示モードをRenderedに固定し、BoundingBoxを基準に引きのある構図を自動決定。選択ハイライトの除去と状態復元まで含め、どの環境でも安定した品質のサムネイルを生成する設計改善を解説します。
SEKKEIYA の S.Models(旧 3D Shape Share)Desktop版では、Rhino 連携によるモデルアップロード体験の中でも、「サムネイルがどのように生成されるか」が、モデル管理・共有・一覧閲覧の体験に大きく影響すると考えています。
従来は、Rhino 側の表示環境や表示モードの違いによって、次のような課題が発生していました。
今回のアップデートでは、これらを根本から整理し、「常に安定した品質で、引きのある Rendered サムネイルを生成する」ことを目的とした設計改善を行いました。
従来のサムネイル生成は Rhino の現在の表示状態や環境設定に影響を受け、Rendered を想定していても結果として Shaded でキャプチャされることがありました。本質は「ユーザーの作業環境に依存した状態をそのままキャプチャしていた」点にあります。
サムネイル生成は本来、個人差・環境差を排除すべき処理です。そこで生成時のみ 表示モードを Rendered に明示的に固定する設計へ変更しました。これにより、Rhino 7 / Rhino 8 の違い、ユーザーごとのビューモード設定、直前の表示スタイルに左右されず、常に同一基準のビジュアルでサムネイルが生成されます。
もう一つの課題が「オブジェクトが画面いっぱいに寄りすぎる」問題でした。カメラ角度や FOV、透視・平行投影に依存したズーム制御では、モデルの大きさや形状によって構図が安定しません。
そこで、選択オブジェクトの BoundingBox を基準に構図を決定する方式を採用しました。
これにより、カメラ角度・投影方式・FOV に依存せず、常に「全体が収まり、周囲に余白のある引きの構図」を実現できます。
サムネイルは単なる「画像」ではなく、モデルを探すためのナビゲーション要素であるという考え方に基づいた改善です。
作業中はオブジェクトの選択状態が視覚的に強調されます。この状態でキャプチャすると、不要なハイライトやアウトラインが写り込みます。今回、キャプチャ直前に選択状態を一時的に解除する処理を追加し、純粋な形状とマテリアルのみが写るようにしました。
重要なのは「サムネイル生成のために Rhino の状態を壊さない」ことです。表示モード・ビュー状態・選択状態を生成前に記録し、生成完了後に必ず元へ復元します。これにより「いつの間にか表示モードが変わっていた」といった違和感なく、作業を続けられます。
Rhino はバージョンによって表示周りの挙動が微妙に異なります。特定バージョン依存の API に寄らず、Rhino 7 / Rhino 8 双方で安定動作することを前提に設計しているため、利用環境が混在してもサムネイル品質に差が出ません。
原本保存用の 3dm と GLB 変換用の mesh 3dm という既存の保存構成には一切手を加えていません。サムネイル生成はあくまで「表示とキャプチャ」の改善であり、データ構造や変換パイプラインには影響しません。Rendered 固定・BoundingBox ベースという設計は、将来的な解像度拡張、複数アングルの自動生成、レンダリング品質オプションの追加といった展開の土台にもなります。
今回のアップデートでは、Rhino 連携アップロード時のサムネイル生成について、表示モード・構図・選択状態・復元処理を含めた全面的な見直しを行いました。結果として「どの環境でも、常に引きのある Rendered サムネイルが生成される」安定した体験を提供できます。S.Models において、サムネイルは「中身を開く前に判断するための、最初の情報」です。環境差に左右されず、意図しない要素が混ざらず、常に同じ基準で生成される——この3点を最優先に、今後も細部の体験改善を積み重ねていきます。