Open12

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 の中で呼べとエラーが出た。

ウサギウサギ

2024-05-19 HSP3.6 HGIMG4 WebGL
.gpb の拡張子はつけてはならない。tamane2.gpb.material を探そうとしてエラーになる。
PCで開くと mtinfo が取れない?? stick は取れるけど。
data の下のファイルは確かに見に行くが res/shaders/ の下を暗黙で取りにいっている。

[ ] emscripten Module FS_createPath, FS_createPreloadedFile などを調べる。
https://qiita.com/kjunichi/items/47715431c1228bfdda90

1986行 data/ が抜けてる。FS_createPath "/", "data" が足りない。
tmp += "data/" + ff + "\n"

2089行 js_gpmode の場合のみ FS_createPath する。
それ以外の場合はすべて平たく配置する。

当面は res フォルダ直下に全部置く、data フォルダを作成してはならない、で運用するのが無難か。

ウサギウサギ

2024-05-25: emscripten
Module['FS_createPreloadedFile']('/', '/foo/bar/baz.png', 'https://example.com/baz.png', true, true) の戻りは void.
FS_createPath の戻りは出来上がったフォルダ名。FS_createPath は '/', '/foo/bar/baz/qux' を指定しても
いきなり途中含めて全部作ってくれる。便利。

ウサギウサギ

2024-10-06:
material の材質と画像にShift_JIS使うの有り?無し?
HSP3.7b9 の gpbconv.exe に「マテリアル名を修正しない」チェックボックスがついているのでいずれ調べる。チェック入れない場合 "Wood Light" が "material_1" になった。

ウサギウサギ

2024-09-23:
環境光。
setdir GPOBJ_LIGHT, 0.75, 0.75, 0.75

少なくとも u_diffuseColor の4つめアルファ成分は効くので省略してはならない。

ウサギウサギ

2024-10-20: 中間XMLのアニメーション部分

<root>
<Animations id="__Animations__">
<Animation id="animations">
<AnimationChannel>
<targetId>Head</targetId>
<targetAttrib>17 ANIMATION_SCALE_ROTATE_TRANSLATE</targetAttrib>
<keytimes count="16">0.0 33.3 66.6 100.0 略[sp]</keytimes>
<values count="160">100.0 100.0 100.0 -0.707 0.0 0.0 0.707 0.0 0.0 0.0 100.0 略 0.0 </values>
<tangentsIn count="0" />
<tangentsOut count="0" />
<interpolations count="1">1[sp]</interpolations>
</AnimationChannel>
<AnimationChannel></AnimationChannel>
</Animation>
</Animations>
</root>
ウサギウサギ

2024-12-05: class Transform は class AnimationTarget から派生している。クリップを反映するときは現在値に対してlerpまたはslerpでweightで反映する。順番が大事。weightは0.0-1.0の範囲に無いとassertだが最後までクリッピングせず反映する。