2026年4月13日月曜日

Jintは、.NET Standard 2.0および.NET 4.6.2ターゲット(およびそれ以降)をサポートしているため、あらゆる最新の.NETプラットフォーム上で実行できる.NET用のJavaScriptインタープリターです。

 .NETアプリケーション内で、安全なサンドボックス環境でJavaScriptを実行

ネイティブ.NETオブジェクトと関数をJavaScriptコードに公開(データベースクエリ結果をJSONとして取得、.NETメソッドの呼び出しなど.
NETアプリケーションのスクリプトをサポートし、ユーザーがJavaScriptを使用してアプリケーションをカスタマイズ可能(Unityゲームのような
Jintのユーザーには、RavenDB、EventStore、OrchardCore、ELSA Workflows、docfx、JavaScript Engine Switcherなどがあります。

  • Jintは.NETバイトコードを生成せず、DLRも使用しないため、比較的小さなスクリプトを非常に高速に実行できます

  • 同じスクリプトを繰り返し実行する場合は、Esprimaによって生成されたスクリプト・またはモジュール・インスタンスをキャッシュし、コンテンツ文字列の代わりにJintに供給する必要があります

  • 実行エンジンは厳格モードで実行することを推奨します。これによりパフォーマンスが向上します

各エンジンの比較結果を確認できますが、すべての使用事例が異なるため、ベンチマークが実際の使用状況を反映していない可能性があることを念頭に置いてください。

TRPG基本的ルール、d20システムは、ダンジョンズ&ドラゴンズ(D&D)などのゲームで採用されているルールセットの一つです。

 TRPG(テーブルトークRPG)でよく使われるd20システムは、ダンジョンズ&ドラゴンズ(D&D)などのゲームで採用されているルールセットの一つです。基本的なルールや概念について説明しますね。

d20システムの基本

  • d20: 「d」は「ダイス」を意味し、「20」は20面ダイスのこと。d20システムでは、ほとんどの行動の成功や失敗を決定するために20面ダイスを使用します。

  • 能力値: キャラクターの基本的な属性や能力を数値で表したもの。通常、力(Strength)、敏捷性(Dexterity)、体力(Constitution)、知性(Intelligence)、判断力(Wisdom)、魅力(Charisma)の6つがあります。

  • スキル: キャラクターが特定の活動を行う際の専門性や訓練度。例えば、隠密行動、交渉、知識などがあります。

  • セーヴィングスロー: 危険や魔法、罠などから身を守るための反応チェック。能力値と関連しています。

  • アタックロール: 攻撃を行う際に、命中するかどうかを決定するためのロール(投げ)。対象のAC(Armor Class:防御クラス)を超える必要があります。

  • AC(Armor Class): キャラクターやモンスターの防御力を数値で表したもの。高いほど攻撃を避けやすくなります。

ゲームの流れ

  1. キャラクター作成: プレイヤーは自分のキャラクターシートを作成し、能力値、スキル、装備などを決定します。

  2. 冒険の開始: ゲームマスター(GM)がシナリオの背景や現在の状況を説明します。

  3. 行動の宣言: プレイヤーはキャラクターが何をするかを宣言し、必要に応じてダイスを振ります。

  4. 結果の決定: GMが行動の成果を決定し、ストーリーを進めます。

  5. 経験値と成長: キャラクターは冒険を通じて経験値を獲得し、レベルアップして新しい能力やスキルを獲得します。

d20システムは多くのTRPGで採用されているため、この基本を理解しておくとさまざまなゲームに応用できます。ただし、具体的なルールはプレイするゲームによって異なるため、手に入れたルールブックやガイドをよく読むことが大切です。

D20はパテントがありますか?

はい、d20システムには特許(パテント)ではなく、著作権と商標、そして「オープンゲームライセンス」(OGL)に基づく使用許諾があります。ウィザーズ・オブ・ザ・コースト(Wizards of the Coast)がダンジョンズ&ドラゴンズ(D&D)の第3版をリリースした際、d20システムという名前でこのルールセットを公開しました。このとき、他の出版社がd20システムを使用して自社のゲームやサプリメントを作成できるように、「オープンゲームライセンス」を導入しました。
OGLは、特定のルールやシステムを利用して新しい作品を作ることを許可するライセンスです。これにより、多くの出版社がd20システムをベースにした自身のゲームを発表することができ、TRPG業界における標準的なシステムの一つとなりました。ただし、d20ロゴの使用やダンジョンズ&ドラゴンズの特定の設定やキャラクターに関する著作権は、ウィザーズ・オブ・ザ・コーストが保持しており、これらの要素の使用には別途許可が必要です。
要するに、d20システム自体はオープンゲームライセンスにより広く利用できるようになっていますが、その使用にはルールがあり、ダンジョンズ&ドラゴンズの固有の設定やキャラクターなどの著作権に触れる要素には注意が必要です。

オープンゲームライセンス(Open Game License、略称:OGL)は、ウィザーズ・オブ・ザ・コースト(Wizards of the Coast)が2000年に導入したライセンス形式で、特にダンジョンズ&ドラゴンズ(D&D)の第3版をリリースする際に、そのルールシステムの一部を公開し、他の出版社や個人がそれを使用して自身のゲームやサプリメントを作ることを可能にしました。この動きは、ロールプレイングゲーム(RPG)業界に大きな影響を与え、多くの新しいゲームや拡張が生み出されるきっかけとなりました。

OGLの特徴と目的

  • 共有と拡張: OGLの目的は、ゲームのルールやメカニズムを共有し、他のクリエイターや出版社がこれらを利用して新しい作品を作り出せるようにすることです。これにより、ゲーム業界全体の成長と革新が促されます。

  • 再利用可能なコンテンツ: OGLの下で公開されたコンテンツは「オープンゲームコンテンツ」と呼ばれ、ライセンス条件に従う限り、誰でも自由に使用、改変、再配布することができます。

  • プロダクトアイデンティティの保護: 特定のキャラクター名、場所、ストーリーなどは「プロダクトアイデンティティ」として保護されており、これらはOGLの範囲外です。つまり、ウィザーズ・オブ・ザ・コーストが所有するD&Dの固有の設定やキャラクターは、許可なく使用することはできません。

OGLの使用方法

  1. オープンゲームコンテンツの識別: 自分の作品に含まれるオープンゲームコンテンツとオリジナルコンテンツ(プロダクトアイデンティティ)を明確に区別します。

  2. ライセンスの記載: 作品にOGLのテキストを含め、どの部分がオープンゲームコンテンツであるかを指定します。

  3. ルールの遵守: OGLの条件に従い、他のクリエイターが自分の作品を同じように使用できるようにします。

OGLは、特定のゲームシステムやメカニズムを広く共有することで、新しいアイデアや作品の創出を促し、TRPGコミュニティの拡大に貢献しています。このライセンスを通じて、多くの独立したゲームデザイナーや小規模出版社が、大手のゲームと競合することなく、創造性豊かな作品を市場に出すことが可能になりました。

オープン・ゲーム・ライセンス(OGL)はウィザーズ・オブ・ザ・コースト社による公的な著作権ライセンスであり、卓上ロールプレイング・ゲームの開発者が、彼らのゲームのためにデザインされたコンテンツの一部、特にゲーム・メカニクスの修正、コピー、再配布を許可するために使用することができる。ただし、類似のコピーや二次的著作物を共有しなければならない。

https://en.wikipedia.org/wiki/Open_Game_License

OGLは、「本ライセンスの使用に同意した対価として、貢献者は、オープンゲームコンテンツを使用するために、本ライセンスの正確な条項で、永続的、世界的、ロイヤリティフリー、非独占的ライセンスをあなたに付与する」と述べている[1]:

オープン・ゲーム・コンテンツ(OGC)
オープン・ゲーム・コンテンツ(OGC)......ゲーム・メカニックであり、方法、手順、プロセス、およびルーチンを含み、そのようなコンテンツがProduct Identityを具現化せず、先行技術を凌駕する拡張である限りにおいて、貢献者によってオープン・ゲーム・コンテンツとして明確に識別された追加的なコンテンツであり、著作権法に基づく翻訳および派生物を含む、本許諾書の対象となるあらゆる作品を意味するが、Product Identityは特に除外される......。
プロダクトアイデンティティ (PI)
... 製品および製品ラインの名称、ロゴ、トレードドレスを含む識別マーク、アーティファクト、クリーチャーのキャラクター、ストーリー、ストーリーライン、プロット、テーマ要素、ダイアログ、事件、言語、アートワーク、シンボル、デザイン、描写、肖像、形式、ポーズ、コンセプト、テーマ、およびグラフィック、写真、その他の視覚的または音声的表現; キャラクター、呪文、魔法、個性、チーム、ペルソナ、肖像、特殊能力の名称および説明、場所、環境、クリーチャー、装備品、魔法または超自然的な能力または効果、ロゴ、シンボル、グラフィックデザイン、その他の商標または登録商標。 ..
他社のプロダクト・アイデンティティの使用は、ライセンス契約違反とみなされます。

  1. 定義:

    • 提供者: オープンゲームコンテンツの著作権や商標の所有者。

    • 二次的著作物: 修正や改良、要約などを含む派生作品。

    • 頒布: 販売やライセンス付与などの配布行為。

    • オープンゲームコンテンツ: ゲームメカニック等、製品IDを除くあらゆる著作物。

    • 製品アイデンティティ: 名称やロゴ、アートワークなど製品を識別する要素。

    • 商標: コントリビューターが使用する識別マーク。

    • 使用: オープンゲームコンテンツの活用や配布。

    • お客様: この契約のライセンシー。

  2. 使用許諾: オープンゲームコンテンツは、このライセンスの条件の下でのみ使用可能。条件変更不可。

  3. 申し出と承諾: このライセンスの条件に同意したものとみなされる。

  4. 許諾と対価: 非独占的で永続的な使用許可が与えられる。

  5. 寄稿権限の表明: 寄稿者はオリジナル作品の権利を有していることを表明する。

  6. ライセンス著作権の通知: 正確な著作権表示を含める必要がある。

  7. プロダクトIDの使用: 特定の条件下でのみ使用可能。

  8. 身分証明書: 頒布物のどの部分がオープンゲームコンテンツであるかを明示。

  9. ライセンスの更新: ウィザーズ社は更新版を発行できる。

  10. 本ライセンスのコピー: 頒布するオープンゲームコンテンツ全てにライセンスのコピーを添付。

  11. ライセンス適用の同意: インストール前に同意が必要。

  12. 準拠不可能性: 法令等により準拠不可能な場合は使用禁止。

  13. 終了: 条項違反で是正されない場合は自動的に終了。

  14. 変更: 法的強制力がない条項は必要範囲で修正。

  15. 著作権情報: ウィザーズ・オブ・ザ・コースト社および原作者による著作権表示。

このライセンスは、オープンゲームコンテンツの使用、配布、修正を可能にする一方で、製品アイデンティティや商標の使用には厳しい制限を設けています。また、ライセンス違反があった場合の自動終了条項や、法令による準拠不可能性に対する規定が含まれています。


2026年4月12日日曜日

さいころを作ってみる。理由はあまりない。

 

画像1

1~6の数字が入ったdiceという配列を作って結果はrockという変数に返すようにする。rollという関数をdiceにひっつけて乱数を配列の上限までの範囲で出すようにしてさいころの結果として戻り値とする。roll関数はsetupで一回と、毎フレーム呼び出されるdrawの中でマウスが押されている状態を検出したときに呼び出すようにする。最新の結果はrockに入っていて、textでrockの内容を画面の左上のほう(x:10 y:30)に毎フレーム表示している。

多くのさいころは点(DOT)で数を表している。1は赤い点一つで、6は黒い点が6つならんでいる。同じように描画したいが、最初からさいころの描画をすると心が折れてしまうので、任意の場所に丸を描くだけを次のゴールとした。

Draw関数の中にDraw関数の中でしか呼び出されない関数を定義して呼び出した数字に応じて任意の個所に丸を書く。願わくば他の処理系他の言語系でも永久にさいころが描けるようにここからコードを正規化していく。ここまででお湯に塩を入れているようなもので、ここから中華料理にするのかイタリア料理にするのか、はたまた精進料理になるのかは書いている人の情熱次第ということになる。

キャプチャ


🎡Pbr pbs BRDF(非透明) BSDF(透明) の違い 物理ベースの反射率モデル fは関数のF

 PBR(Physically Based Rendering): PBRは、物理ベースのレンダリング技術を指します。これは、光の物理的な挙動を忠実に再現し、リアルな結果を得るための手法です。PBRは、物体の材質や照明条件を考慮して、光の反射や散乱を計算します。また、エンジンやソフトウェアのアルゴリズムを用いて、リアルタイムのレンダリングにも応用されます。

  1. PBS(Physically Based Shading): PBSは、物理ベースのシェーディングを意味します。この手法では、光の挙動に基づいた正確なシェーディングモデルを使用して、物体の見た目や質感を計算します。PBSは、レンダリングの段階でBRDFやBSDFを使って、光の反射と散乱の振る舞いを表現します。

  2. BRDF(Bidirectional Reflectance Distribution Function): BRDFは、表面の反射率を表す関数です。物体が入射した光をどのように反射するかを記述します。BRDFは入射光の方向と反射光の方向を考慮して、それらの間の関係を定義します。これは主に非透明な物体の表面の反射に対して使用されます。

  3. BSDF(Bidirectional Scattering Distribution Function): BSDFは、物体が入射光をどのように散乱するかを表す関数です。BRDFの考え方をさらに拡張し、入射光が散乱した後のすべての方向への反射や透過を含む場合に使用されます。そのため、透明な物体や不透明な物体の散乱特性を表現するのに適しています。

要約すると、PBRとPBSは物理ベースのレンダリングとシェーディングの手法であり、BRDFとBSDFは物体の反射と散乱を記述する関数で、BSDFがより包括的な散乱モデルとして使われます。

s2012 Pbs Disney BRDF Notes v2 を理解してからBSDFを理解する


まずBRDF(双方向反射率分布関数)を理解する

BRDFは、非透明な表面での光の反射をモデル化します。表面上の一点における反射率は、入射光の方向と反射光の方向に依存します。数式で表すと、


画像


画像

BRDFは、較正されたカメラと光源を用いて実際の物体から直接測定することができるが、コンピュータグラフィックスで頻繁に仮定されるランバート反射率モデルを含め、多くの現象論的モデルや解析的モデルが提案されている。最近のモデルの有用な特徴には,次のようなものがあります:

異方性反射に対応
少数の直感的なパラメータを使って編集可能。
すれすれ角でのフレネル効果を考慮できる。
モンテカルロ法に適している。
W. Matusikらは、測定されたサンプル間を補間することで、現実的な結果が得られ、理解しやすいことを発見した。


画像
さまざまな光と表面の相互作用をモデル化するために使用できる3つの要素成分[8]。入射光線は黒で、BRDFによってモデル化された反射光線は灰色で示されている。

Lambertianモデル。完全な拡散(マット)表面を一定のBRDFで表す。
Lommel-Seeliger、月および火星の反射。
Phong反射率モデル。プラスチックのような鏡面性に似た現象学的モデル[9]。
Blinn-Phongモデル。Phongに似ているが、特定の量を補間することができ、計算オーバーヘッドを減らすことができる[10]。
Torrance-Sparrowモデル。表面を完全な鏡面マイクロファセットの分布として表現する一般的なモデル[11]。
Cook-Torranceモデル。波長を考慮した鏡面-マイクロファセットモデル(Torrance-Sparrow)であり、その結果カラーシフトも考慮されている[12]。
Wardモデル。(表面の法線に加えて)表面の接線方向に依存する楕円ガウス分布関数を持つスペキュラー-マイクロファセットモデル[13]。
Oren-Nayarモデル。「有向拡散」マイクロファセットモデルで、(鏡面ではなく)完全に拡散したマイクロファセットを持つ[14]。
Ashikhmin-Shirleyモデル。鏡面下の拡散基板とともに、異方性反射率を許容する[15]。
HTSG(He、Torrance、Sillion、Greenberg):包括的な物理ベースモデル[16]。
Fitted Lafortune モデル。複数の鏡面ローブを持つ Phong の一般化で、測定データのパラメトリッ クフィットを目的としている[17]。
解析格子BRDF近似のためのLebedevモデル[18]。
ABgモデル[19][20]。
K相関(ABC)モデル[21]。

マイクロファセットモデルを参考に独自のBRDFを定義してみた。

Matusikらは2003年に、塗料、木材、金属、布、石、ゴム、プラスチック、その他の合成材料など、さまざまな材料を含む100個の等方性BRDF材料サンプルを収集しました[18]。このデータセットは、三菱電機研究所(www.merl.com/brdf)から自由に入手でき、新しいBRDFモデルの評価によく利用されている。

BRDFエクスプローラーというアプリがオープンソースで公開されているらしい。

物理ベースの新しい反射率モデルを開発する際、アーティストから「シェーディングモデルはアートディレクタブルである必要があり、必ずしも物理的に正しいとは限らない」と注意を受けました。そのため、私たちは厳密に物理的なモデルを開発するのではなく、「原理的な」モデルを開発することを理念としてきました。

1つのカラーパラメータと、10個のスカラーパラメータ

baseColor - サーフェイスの色で、通常はテクスチャマップから提供されます。
1- subsurface - サブサーフェス近似を使用して、拡散形状を制御します。
2- metallic - 金属性 (0 = 誘電体、1 = 金属性)。これは、2つの異なるモデル間の線形ブレンドです。メタリックモデルは、拡散成分を持たず、ベースカラーと同じ色合いの入射スペキュラも持っています。
3- specular - 入射スペキュラ量。これは明示的な屈折率の代わりとなる。
4- specularTint - 芸術的なコントロールのための譲歩で、ベースカラーに向かって入射スペキュラを染める。スペキュラのかすれ具合は無彩色のままです。
5- roughness - 表面粗さ、拡散と鏡面反射の両方を制御する。
6- anisotropic - 異方性の度合い。スペキュラハイライトのアスペクト比をコントロールします。(0 = 異方性、1 = 最大限の異方性)。
7- sheen - 主に布を対象とした、追加のグラージングコンポーネントです。
8- sheenTint - ベースカラーに対して光沢を着色する量。
9- clearcoat - 2つ目の、特別な目的のスペキュラーローブです。
10- clearcoatGloss - クリアコートの光沢を制御します(0 = 「サテン」外観、1 = 「光沢」外観)。

で、これが、Principled (プリンシプル) BSDFにつながってくる


Principled (プリンシプル) BSDF は、複数の階層を一つにまとめ、ノードを使いやすくしたものです。これは、"PBR"シェーダとして知られる、ディズニーの原理モデルに基づいています。PixarのRenderman ® 、Unreal Engine ® などのソフトウェアとの互換性があります。 Substance Painter ® のようなテクスチャペイントソフトのパラメータに直接リンクすることも可能です。

https://docs.blender.org/manual/ja/2.90/render/shader_nodes/shader/principled.html

パラメータは増えて12個に


Clearcoat (クリアコート)
他の要素の最上部にあたる、追加の白いスペキュラ階層。自動車の塗装などのマテリアルに適します。
Clearcoat Roughness (クリアコートの粗さ)
クリアコートスペキュラーの粗さ。
Transmission (伝播)
完全に不透明な表面を0に、完全なガラスの様な透過は1にします。
Transmission Roughness (伝播の粗さ) Cycles Only
GGX の分布を制御し、透過光のために使用する粗さ。



BSDF(Bidirectional Scattering Distribution Function)

BSDFはBRDFを拡張して、透明または半透明の材料での光の散乱も考慮に入れます。BSDFは、入射光が表面で反射されるだけでなく、透過もする場合の挙動を記述します。数式では、


画像

BSDFは、光の反射と透過の両方を統合したモデルであり、より複雑な光の挙動をシミュレートするのに適しています。BRDFと比較して、BSDFは材質が光をどのように散乱させるか(例えば、乱反射や屈折など)をより包括的に表現できます。


画像
https://en.wikipedia.org/wiki/Bidirectional_scattering_distribution_function#/media/File:BSDF05_800.png

BSDF(双方向散乱分布関数)の定義は標準化されていない。この用語は、おそらく1980年にBartell、Dereniak、Wolfeによって導入された[1]。ほとんどの場合、光が表面によって散乱される方法を記述する一般的な数学関数の名前として使用される。しかし実際には、この現象は通常、反射成分と透過成分に分けられ、BRDF(双方向反射率分布関数)とBTDF(双方向透過率分布関数)として別々に扱われる。

BSDFはBRDFとBTDFのスーパーセットであり、一般化されたものです。すべてのBxDF関数の背後にある概念は、入力が任意の2つの角度、1つは入射(入射)光線、もう1つは表面の与えられた点での出射(反射または透過)光線であるブラックボックスとして記述することができます。このブラックボックスの出力は、与えられた2つの角度における入射光線と出射光線のエネルギー比を定義する値です。ブラックボックスの内容は、実際の表面挙動を多かれ少なかれ正確にモデル化し近似しようとする数式であったり、測定データの離散サンプルに基づいて出力を生成するアルゴリズムであったりします。これは、関数が4(+1)次元(2つの3次元角度の4つの値+光の波長の1つの任意値)であることを意味し、単純に2Dで表現することはできず、3Dグラフでも表現できないことを意味する。時々文献で見かける2Dや3Dのグラフは、関数の一部分しか示していない。
BSDFという用語は、単にBxDF関数群全体をカバーするカテゴリー名として使われることが多い。
BSDFという用語は、単に入射光角度の関数として散乱量(散乱光ではない)を記述する関数として、少し異なる文脈で使用されることもあります。この文脈を説明する例として、完全なランバート面の場合、BSDF (angle)=const. このアプローチは、例えば光沢面のメーカーが出力品質を検証するために使用される[clarification needed]。
BSDFという用語のもう1つの最近の使い方は、いくつかの3Dパッケージで見ることができ、ベンダーがPhong、Blinn-Phongなどのような単純でよく知られたCGアルゴリズムを包含する「スマート」カテゴリとして使用しています。
2000年、Debevecら[2]による人間の顔に対するBSDFの取得は、超フォトリアリスティックなデジタルそっくりさんによる完全バーチャル映画撮影への道における最後の重要なブレークスルーの1つであった。このチームは、移動可能な光源、移動可能な高解像度デジタルカメラ、いくつかの位置に設置された2つの偏光板、および小型コンピュータ上の実にシンプルなアルゴリズムで構成される、最もシンプルなライトステージを使用して、地下散乱成分(BTDFの特殊なケース)を分離した世界初の研究者であった[2]。 [2]研究チームは、空気層から油層に反射・散乱する光は偏光を保持し、肌内部を伝わる光は偏光を失うという既存の科学的知見を利用した[2]。表面下散乱成分は、モデル内部からの安定した高散乱光の輝きとしてシミュレートすることができ、これがないと肌がリアルに見えない。ワーナー・ブラザース映画によって設立されたESC Entertainment社は、『マトリックス リローデッド』と『マトリックス レボリューションズ』の視覚効果/バーチャル撮影システムを担当するために特別に設立された会社で、ランバート拡散成分と、フレネルタイプの効果を持つ修正鏡面フォン成分からなる近似解析BRDFのパラメータを分離しました。

BRDF(双方向反射率分布関数)[4]は、BSSRDFを簡略化したもので、光が同じ点から入射し、同じ点から出射すると仮定しています(右図参照)。
BTDF(Bidirectional Transmittance Distribution Function)[1]はBRDFに似ていますが、表面の反対側を対象としています。(一番上の画像を参照)。
BDF(双方向透過率分布関数)はBRDFとBTDFを総称したものです。
BSSRDF(双方向散乱-表面反射率分布関数または双方向表面散乱RDF)[4][5]は、表面下散乱(SSS)のような現象を含め、出射放射輝度と入射光束の関係を記述します。BSSRDFは、表面に当たった2つの光線の間で光がどのように輸送されるかを記述します。
BSSTDF(双方向散乱-表面透過率分布関数)はBTDFのようなものですが、表面下散乱を含みます。
BSSDF (Bidirectional scattering-surface distribution function)は、BSSTDFとBSSRDFを総称したものです。BSDF(双方向散乱分布関数)としても知られています。