Open4

HSP3 色々

ウサギウサギ

2022/4/29 HSP3.6hgimg4

https://github.com/onitama/OpenHSP/blob/b3f5abe784f94ba22efa37e114deeff922f6692a/src/hsp3dish/hsp3gr_dish.cpp#L2209

p_vec は変数として取得する。後で計算結果を代入して戻す。
v2 に 値を取得する。

v に 4つセット。

\begin{bmatrix} x \\ y \\ z \\ 1 \end{bmatrix}

https://github.com/onitama/OpenHSP/blob/eddc647733e82657757055b66fd8c2dbf17898b8/src/hsp3dish/geometry.cpp#L1479

p_vec, v をセット。

src 3つ から target 3つを引いたベクトルを作るための
オイラー回転を src に戻す。

HSP3 での実際の動作

fvface カメラの位置ベクトルvec, 対象物のX, Y, Z

と指定すると vec に回転が取得できて(うちZ成分は常に0.0)
カメラを setangy GPOBJ_CAMERA, vec.0, -vec.1, vec.2 で
回転するとカメラが対象物を見る。
一方 setangy 対象物のid, vec.0, -vec.1, vec2 で対象物の
ローカル(0,0,1)の向き がカメラの方を見る(ビルボードみたいにできる)。
setangy を使うことと Y成分 をマイナスするのがポイント。
setangy はちゃんと右ねじ回転のようなので、Y成分は fvface から取得する時点で符号を逆にしておいてほしいなぁ。

カメラに適用するときは gplookat を使うのがいいのだろう。
fvface のいいところはピッチ成分Xと回転成分Yが得られるところや対象物に適用できるところだろうか。

ウサギウサギ

2022/5/3 HSP3.6hgimg4

ポイントライトとスポットライトに対応した時期に
DIRECTIONAL_LIGHT_COUNT は1個以上の場合、コードの方で後から自動で付与されるようになっている。

https://github.com/onitama/OpenHSP/blob/master/src/hsp3dish/win32gp/gamehsp.cpp#L444

またシェーダーでは DIRECTIONAL_LIGHT_COUNT が定義されていない場合は
DIRECTIONAL_LIGHT_COUNT 0 が定義される。
多分、DIRECTIONAL_LIGHT_COUNT を .material に書かないことを期待されてると思う。
duck さんは材質名がちゃんと blinn1 と明記されてて更新されてるけど DIRECTIONAL_LIGHT_COUNT は消し忘れなんだと思う。
6/13 違う。どうもgpbモデル系は明記が必要みたい。
そして u_modulateAlpha が 0.0 で渡ってきてないか??

透明になる原因はわかんないけど、DIRECTIONAL_LIGHT_COUNT の予期せぬ動作でアルファ値が 0.0 になるんだろうな。
もし輪郭で中間値が取れたら確かに重ねあわせで面白いことできそうではある。


別件かもしれないけど strstr で検索していて
AAADIRECTIONAL_LIGHT_COUNT 1
の記述があっても DIRECTIONAL_LIGHT_COUNT 1 と
同様な動作をする。無効化したつもりが全然無効化されてなくて切り分けに失敗したTT

https://github.com/onitama/OpenHSP/blob/hsp37test/src/hsp3dish/win32gp/gamehsp.cpp#L2027

ウサギウサギ

2023/8/13 HSP3.7β6 HGIMG4

#version 300 es

つけてみたけどエラー出た。

ウサギウサギ

2023/9/30 HSP3.6 HGIMG4 WebGL

exec "await navigator.mediaDevices.enumerateDevices();"

await つけたら async の中で呼べとエラーが出た。