Blender3.3で作ったデータを3.6で開いた

ジオメトリノードのUV関係が改善されているようです
Blender3.3で作ったデータを3.6で開いたら
立方体にUVマップという出力が増えています
そして[名前付き属性格納]が自動で増えています
ただし、ベクトルを2Dベクトルに手動で直す必要があります
これでテクスチャーが表示されました
この調子で「カーブのメッシュ化」も
改善して欲しかったですね

 

Blender Geometry Nodes で tube状の物体にtextureを貼る

Blender Geometry Nodes で tube状の物体にUVがないので
textureが貼れない欠点がありましたが    
英語圏の資料を読んで解消しました。
https://www.youtube.com/watch?v=w9LOxkoX-yY
Geometry nodes: UV map in curve objects    2023/01/06
thankyou    Leonardo Romero
ただし 3.3ではうまくいったのですが
3.6ではうまく行かないので多少 工夫が必要でした
3.5以後に vectorではなく 2Dvectorが導入されて
それがUVのことらしいです
3.6では convert attribute にUVがなくなっていますが
適応を実行するだけで 済むように改善されています
とりあえず ・・ メモのみ  #Blender

 

 

Unity LOD groupの不一致について

 ====   『LOD groupの不一致について』====
LOD groupを久しぶりに使ったら
previewとcluster本番が違うのでびっくりしました
これではLOD%の微調整作業がしにくいですね
症状は 「previewの見た目の大きさと
 cluster本番の見た目の大きさが
 あまりに一致しない」ということです
最初はUnity純正の問題ではなくClusterの運用の問題かと疑いました
添付画像は 単純なOBJで実験測定してみたものです
図1 

 


今まで曖昧だった点を調べて
3点ほど注意点がみつかったので 備忘録としてかき残します

1つ目は
 ====   『LODBIAS値の警告』====
「Active LOD  is 2.0.  Distances are adjusted accordingly」
LODBIAS値の警告です
とにかく 2.0から1.0に変更すると大幅に解消しました
根拠は以下の通り
https://docs.unity3d.com/ja/2021.3/Manual/class-LODGroup.html
ノート:「 Lod Bias プロパティが 1 に設定されていない場合、カメラ位置は、
    各 LOD レベルが実際に遷移する位置と一致しない場合があります。
    この場合、選択バーの下に警告メッセージが表示されます」

図2,3

この警告を放置したままのtutorialが多いのが不思議です
Project setting 「bias」で検索して
 LOD Bias=2(デフォルト) を 1にします
指定値%と previewの 見た目%がほぼ同じになりました


原因のひとつはUnity本家だったようです
このBias値の働きや意味が未消化のままですが
とりあえず、症状が解消しました

2つ目は
 ====   『Recalculate Bounds 』====
OBJECT size の再計算です
Recalculate Bounds すると 矩形が見えてきます
(微調整しながらせっかく設定した%が
変わることがあるので押すのが億劫になりがちですが 
 ObjectSizeがデフォルト=1のままでは運用できるのは
1mぐらいのものに限られるでしょう)
デフォルトでは小さくて気づかなかった正方形の枠です
バウンディングボリュームサイズのデフォルトは1mなので
画面では見落としがちです
スザンヌを取り囲む枠が見えてきました 
これは物体に外接する2Dの正方形のようですがどんな計算なのでしょうか
円や球体でもいいのではないでしょうか
わかりやすくするために半透明球をおいてみました(後述の工夫参照)

LODはポリゴンモデルのバウンディングボックスとは別に
LOD専用のバウンディングボリュームという数値を算定していると推理しています
バウンディングボックスはX,Y,Zの3つの値を持っていますが
LOD専用のバウンディングボリュームはobject size 一つだけですので
きっと、球体だろうと推測しました
おそらく、物体にできるだけ近い球体に代表させていると推理しています

図はスザンヌを10x10=100個ならべたLODを作るケースです
このような 扁平な物体はめだって症状が現れるため
今回のトラブルを追求することになりました


3つ目は測定のしかたです

 ====   『測定のしかた 半透明球の工夫』====

「高さを基準に判断する」とうろ覚えな記憶がありましたが
これで 自分は混乱していました。
どこを測定するかで%数値と実際の精度が変わってきます
LOD%の割り算を分母と分子にわけて考えますと
分母は画面の高さ方向の長さのようです
これは デバイスによって画面のアスペクト比がかわるので

高さ方向を基準にしているようです
それに対して分子は ちょっと難解です。資料がないので推測になります
物体が縦長だったり 扁平だったしても
物体の高さだけで判断するという単純な話しではないようです

バウンディングボックスXYZの最大値に近いと思いますが
正確な計算の仕方がわかりませんでした。
「物体にできるだけ近い球体で代表する」と仮定して話しを進めます

そこで、わかりやすくするために半透明球をおいてみました
正方形もしくは球で考えるなら 縦でも横でも同じですね
それが割り算の分子になります

 

勘違いしないための工夫として半透明球をおきました
バウンディングボリュームのサイズを球体のスケールに入力しています
矩形の1辺と球の直径が同じということです
Recalculate Bounds で算出した値です
どの角度からみても矩形と球体がほぼピッタリはまりました 
推論は概ねあたっているようです
(文献が見当たらないので 実験と推論で経験を書いています
 どこか間違っていたらごめんなさい)
LOD0,1,2に置いた物体によっては 再計算によって
ObjectSizeの値がかわることがあります
そしてせっかく設定した%も動いてしまうことがあります
なので、球体のようなダミーを置いてメドをきめたら
後は 再計算しないという手順もありえます

以上の3点に注意して作成すると
 「LOD指定%と previewの見た目の大きさと
  cluster本番の見た目の大きさの3者はほぼ一致して
  作業がはかどる」ということになります
・・・以上、創作の参考になれば幸いです。
ただし、LODの仕組みの仮説推論についての責任は負いかねます
間違いの指摘や補足資料ありましたらご連絡ください
環境 win10 Unity2021.3    CCK2.3.1
            ではまた    2023.08    #Cluster #Unity

追記
Unity2019に比べてUnity2021ではLOD groupが少し便利になっています
Unity2019では Object sizeの数値が表示されてなかったようです
cluster公式「テンプレートワールド」のprojectでは

LOD Bias値が1に設定されていました
他にも謎の設定が多数あります。最初からこれを使えばよかった

・・・がっくし orz  ○| ̄|_ 

追記2
Cluster本番のcameraはLOD Bias機能に対応していないと思われます
実験したところそのようです BIAS=1と同じ結果になりました

CCK2.1.0のMtoonのコンフリクト問題

CCK2.1.0のMtoonのコンフリクト問題
    とりあえずは accessoryの試作はできたのですが
    Mtoon が大丈夫かどうか点検すると 問題点が発覚

       #Cluster

この記事が前提としないユーザー
    はじめて CCK2.1.0を使う人
    projectは 使いまわしせずに毎回 ゼロから作っている人
この記事が前提とするユーザー
    projectは ゼロから作らず 再利用している人
    CCK用の projectに VRMもインストールして projectの雛形を 作っていた人
    ・・・乗り物に揺れものをつけたり Mtoonも使っていた人
症状1    CCK2.1.0にMtoonが見当たらない
    CCK2.0.0をCCK2.1.0にupdate しましたが
    assetで検索してもMtoonがみあたらないので 同梱されていないと勘違い

症状2    よくみると エラー多数 MtoonがConflictしているらしい
    無視して作業続行できなくもないが・・・ うつくしくないので今のうちに解消したい



原因    CCK2.1.0にMtoon3.4が同梱されているが
    install場所がassetフォルダの外だった
        \Library\PackageCache\・・・・・以下省略
      なので assetで検索してもみつからないわけです
    ちなみに VRM v0.61.1の由来の VRM Mtoonのインストール場所は
        Assets\VRMShaders\MToon
        なので    assetで検索してヒットするし ここに見えるものだと思っていました 
        《今後 VRM1.xxで 変わるかも》

対策1  projectの継続使用を諦めて 作り直す
    データの方を *.unitypackageで 継承し直すことにする
対策2
     VRM VRMshaders の2つのフォルダを削除したら 
    VRM v0.61.1の由来のMtoonが消えてコンフリクトが解消した
     そのかわり SpringBoneが使えなくなった その件は探究することにする

考察    「CCKにいっそspringboneも同梱して欲しい」
    CCK1.15 ~ CCK2.0.0までは projectを継続利用できていたように思いますが    
    CCK2.1.0 で   projectを継続利用できない 不連続点ができたように思います
    これは projectの運用の仕方によって意見や見方は変わってくるとおもわれます
    悪しからず

おせ~~て コンソールの疑問とTips

 ====   『OKと言わないジャバコンソール』====
Java script ってどうだっけ
昔にかじっただけなので 思い出せませんね
C#とかluaとか記憶がごっちゃになっているし・・・
そもそも、Unityは java廃止じゃなかったでしょうか
いまさらjavaなんでしょうか
    Var let Void  型宣言 とかどうなったのでしょうか

javaも変化していろんなversionがあるようです
今は java scriptは ES2015(ES6) 準拠でしょうか

例えば    [??]  って文字化けかと思ったら 演算子かなにからし
アロー関数ってなんだろう そんなのあったかな?
最初は不等号の一種かと思いましたが [    => ] なるほど矢印の形をしている
ちなみにこれは [ <= ] 不等号らしい 
《ちなみに 無名関数と アロー関数はちょっと違うらしい》

とりあえず ジャバコンソール(以下ジャバコン)をいじってみます
まず、ジャバコンを開発してくれた方に感謝です
1文字でも変更するとすぐに反応してくれます。早いです
早すぎて scriptを全文読まずに 半分ぐらい読んで実行するらしく
エラーのないはずのscriptでも コンソールにエラーを残してくれます

ですが 『OKとは 絶対に言わない』 ようです
何と言っても 入力待ち なのか フリーズ(応答なし)なのか
 ジャバコンでは 判別つきません
《 >1+1を入力すると <2 が返れば フリーズしていないと確認できるようです 》



コンソールは その前の 赤いエラー文字が表示されているだけで
今の状態を伝えてくれません
『返事しなさいよ』と叫びたくなります

うろ覚えの記憶で闇雲にエラーを試していてもラチがあかないのでtutorialをやってみることにします
ポケットさんの記事は 混乱している記憶を整理するのに役にたちました ありがたい
https://gist.github.com/pocketberserker/0a8d4c77780de8defd49ec88447205c8
スクリプト付きアイテム」のためのJavaScript入門(非公式)
@ポケットバーサーカーpocketberserker

> が入力のエコーで < が出力のようです
> --------------
 > let i = 10
 < undefined
 > i
 < 10
> --------------
[undefined]・・って、てっきり エラーかと思っていたら、違うようです
定義しているのに un-defined「未定義」とはどういう 返事なのでしょうか!
[undefined]は[understanded] のミスプリではないかと思いました
《たぶん null や Undefined は トラップに使うのであって OKの代用とは言い難い気がします》
とにかく、代入成功なら [  < OK   ]・・て言って欲しいな。
コマンドプロンプトが点滅して入力待ちを示してくれるイメージは
Basic インタープリタの記憶でしょうか

====『お返事なさい!ジャバコン』
《Cluster Javaコンソールの第一印象を愚痴りましたが
 開発された方々には感謝とお礼申し上げておきます》
ジャバコンソールが返事をしないなら
ユーザーが返事を書けばよい  と気づいたので 
以下の print文 相当の 行を挿入することにしました

$.log("----ok Initialize");
$.log("----ok intract");
$.log("----ok update");            
    //$.onUpdate() 用  注:流れるので 不要になったらレム文にする
$.log("----ok end of sentence");    
    //文末の点検用

これでやっと試行錯誤ができるようになってきました
具体例として 巨大水面 (20m100m)のscriptについて書きます
125個のOBJを並べるscriptです
「実質4x4x4m制限を超えたアイテム作れるようになった」
という記事に触発されて 闇雲に配列とかいじっていましたが、完成しないので
結局、hyoromoさんのscriptも参考にさせていただきました

 この記事は CCK2.0.0の頃の記事です
CCK2.0.0では 水面を 128個おけたのですが
CCK2.1.0でuploadしようとすると「Mesh renderer数32以下にせよ」
というエラーに引っかかるようになりました
巨大平面は今後 16mx32m ぐらいが 限界になるかもしれません

----------------巨大水面 (20m100m) の例 ----------------
$.onUpdate(deltaTime => {
let count1 = $.state.count1 ?? false;
 if (!count1) {                //初回だけ実行される
 $.log("----ok update");        //1回だけ表示されるはず
let index = 0;         

for (let i = 0; i < 5; i++) {
for (let j = 0; j < 25; j++) {
  let pos = new Vector3(4*i,1,-4 * j );    //高さYは1固定
  let tile = $.subNode("plane2side (" + index++ +")");    
  tile.setPosition(pos);        //これで 元のsubnodeにも値が入るらしい 不思議
  let rot = new Quaternion().setFromEulerAngles(new Vector3(-89.9, 0, 0));  //BlenderFBXあるある 
 tile.setRotation(rot);    
}
}
    $.state.count1 = true;
}else{}
});
 $.log("----ok end of sentence");    //文末の点検用

    ------------------



ちなみに OBJ名は水面ですが両面あるので2sideと命名しています
以下のような名前で 0~124まで用意しています
    plane2side (0)
    plane2side (1) 
    plane2side (2)
    ・・・・・
    plane2side (124)
もっとスマートにできそうですが現時点では無理でした
一つだけ用意して Create Itemで 増殖させたらスマートですが
ワールドクラフトではまだ そのコマンドは許可されていないと思います 残念
増殖するポップコーンをみて うっかり もう許可されたのかと錯覚してしまいました

どうせ一回しか実行しないなら onUPdate文の内で実行するのも無駄なので
onUPdateを省いてみたところ、 エラーでした
onUPdateは 必ず必要らしいです
それなら まあ、いいかと そのままにしています
このあたりはウロ覚えと 確証がないので 『java script わからん』
とサジをなげておきます
今後、負荷を考慮した 書き換え 講座とか 期待したいですね

引用して使って下さいというには自信がないですね
処理負荷がどうなのか わからないし 責任もてません
向きが勝手にかわると聞いたので 向きを指定していますが
不要だったかもしれません。恥を書いておきます

おまけ    

====「パッケージという用語が多すぎる」====
ワールドクラフトのアイテムにもパッケージという言葉がでてきますが
ここでは     パッケージマネージャ と *.unitypackage ファイルの話になります
2022年夏 Clusterが Unity2019から Unity2021 へ移行した 時の話題です

おおざっぱには 自分としては以下のよう理解しています
『CCKやプラグインなどのプログラムは パッケージマネージャ で操作する
  メニューでは    Window>packageManager
 ユーザーデータやアセットは  *.unitypackage ファイルを 操作する
  メニューでは    assets>importPackage>Custum    』




ですが厳密にはそうではないので 自分用に調べたことをまとてみました
間違っていたらごめんなさい。
*.unitypackage ファイルは データもプログラムも両方 梱包できる形式です
混乱があるなら、データのみのファイル形式と プログラムのみファイル形式を分ければ話しはすっきりしそうです
ですが    assetでは 3Dデータ以外に sampleシーンも同梱するように    ルールがあるようです
    scriptやプログラム的なデータも入れたいでしょう
またプラグインのほうでも sampleとして 3Dデータを同梱して 動作確認しやすくしたいようです
そういうわけで *.unitypackage ファイルは データもプログラムも両方 梱包できる形式としてスタートしたようです
たぶん当初は *.unitypackage ファイルの import exportの ひとつのメニューで済んでいたのかもしれません
Unity側のDocumentを読むと
Unity2019では あいまいでしたが Unity2021では メニューを分けて行こうという傾向が見えてきます
プラグインのインストールでは *.unitypackage ファイルも使いますが
他にもurlを指定したりいろんな仕掛けをくわえて 
データのimportとは 違う方向に手順が発達してきたのがパッケージマネージャーのようです

例えば CCKの導入方法は 3通りぐらいあるようです
> 1 CCKの入ったProjectフォルダごとZipでユーザーに提供する方法
> 2 パッケージマネージャで 「Add package from disk」
> 3 パッケージマネージャで 「Scoped Registries」云々の方法
3の新しい方法ではURLを入力するだけで 直接 *.unitypackage ファイルを見ることがないようになっています

古いプラグインによっては2の方法でしか利用できないものもありますね
2022年夏 Unity2021 への移行での 2022.0704~0717の約2週間
このときに、ちょっと古い方法  *.unitypackage ファイル で CCK1.15.0を配布するという
方法がとられました。メニューでいうと「Add package from disk」です。
これで多少の混乱がありました。  
・・・・・以上



科学解説風ワールド勝手にリストアップ2022年夏

更新やらお疲れ様です

2022.0718のUnity2021対応騒動をきっかけに
ワールドを再訪問してみました
消滅させずに 維持されている方々にお礼申し上げます
元は、ネタ調べの備忘録でしたが
こういう分野のリストがないので 
2022年春gamejamの時期に公開していました
いずれ検索機能が充実すれば不要となるリストです
科学解説のワールドを制作予定のかたの
参考になればと思います

 

物理 科学館 『 バーチャルカミオカラボ 』 ・・・・ 2021対応なし OK
-- 見所-- 粒子が不透明 ミニ展示多数
化学 アスレチック 『 アセチルサリチル酸 』 ・・・・ 2021対応なし OK
-- 見所-- 粒子が不透明 アスレチック風の試み
化学 アスレチック 『 【Molecule Run! ④】 』 ・・・・ 2021対応なし OK
-- 見所-- ESCAPE FROM THE SOLUTION! アスレチック風の試み
化学 アスレチック 『 【Molecule Run! ③】クマリン 』 ・・・・ 2021対応なし OK
化学 アスレチック 【Molecule Run!②】化学反応式の上を走る! ・・・・ 粒子が不透明
化学 アスレチック 『 【Molecule Run!①】アセチルサリチル酸 』 ・・・・
-- 見所-- アスレチック風の試み
生物 水族館 『 水族館 』 ・・・・ 2021対応あり OK
-- 見所-- 今みるとシンプルな水槽に見える
生物 水族館 『 Lost Aquarium 』 ・・・・ 2021対応あり OK
-- 見所-- story仕立て
生物 水族館 『 シラスうなぎ奇説展 』 ・・・・ 2021対応あり OK
-- 見所-- 魚群を動かせる
生物 動物園 『 ほっこりパーク動物園 』 ・・・・ 2021対応あり OK
-- 見所-- いわゆるデート向き動物園
生物 水族館 『 妄想水族館 』 ・・・・ 2021対応なし OK
-- 見所-- 粒子が不透明 エサやりができる
生物 水槽 『 Noriben AQUARIUM 』 ・・・・ 2021対応なし X
-- 見所-- ガラスが変 魚群の動きが見えず残念
生物 水族館 『 Aquarium 』 ・・・・ 2021対応なし X
-- 見所-- ガラスが不透明 残念
生物 野外 『 流木サーフィンV3-58 』 ・・・・ 2021対応あり OK
-- 見所-- サーフィンに乗れる
生物 博物館 『 幻想図書館 -あふれる魂Ver- 』 ・・・・ 2021対応なし OK
-- 見所-- "> 鯨骨あり 骨格標本と建物の効果が考察できる
生物 研究室 『 走査型電子顕微鏡 』 ・・・・ 2021対応なし OK
-- 見所-- 器具の操作練習パターンだろうか
地学 科学館 『 メタバース地球科学ミュージアム 』 ・・・・
-- 見所--
地学 博物館 『 福井バーチャル恐竜展 in cluster 』 ・・・・
-- 見所-- イベント用でしょう
地学 博物館 『 ティラノサウルスの部屋 』 ・・・・ 2021対応なし OK
-- 見所--
地学 博物館 『 恐竜ペーパーミュージアム 』 ・・・・ 2021対応なし OK
-- 見所-- スピノの不透明 図鑑のように一覧にしてみたいものです

地学 博物館『バーチャル恐竜館<別館>』
-- 見所-- 約40体の実物大の3D恐竜が展示されています
       リアルな見た目の割に負荷が軽いです    12月追加
天文 野外 『 日食 』 ・・・・ 2021対応なし OK
-- 見所-- 宇宙でなく、ドラマ的、現場での再現だね
天文 野外 『 CHILLOUT 』 ・・・・ 2021対応あり OK
-- 見所-- たぶん木星
天文 野外 『 Sun System 』 ・・・・ 2021対応なし OK
-- 見所-- 粒子が四角 わかりやすい
天文 野外 『 Sector 2.725 』 ・・・・ 2021対応あり OK
-- 見所-- 小惑星イトカワ 無重力を体感できそう
天文 野外 『 はやぶさ2タッチダウン 』 ・・・・ 2021対応あり OK
-- 見所-- リュウグウ 探査船が動く
その他 科学館 『 火星第46コロニー人類史ミュージアム 』 ・・・・ 2021対応あり OK
-- 見所-- story仕立て
その他 博物館 『 バーチャル名大博物館 』 ・・・・
-- 見所-- ミニ展示多数
その他 祭広場風 『 どこでも博物ふぇす!零ブースひろば 』 ・・・・
-- 見所--
その他 野外 『 防災シミュレーション 浸水 』 ・・・・ 2021対応あり OK
-- 見所-- 防災避難をgameにした試み
医療 処置室 『 REVIVE !!! ~心肺蘇生~ 』 ・・・・
医療の訓練
医療 アスレチック 『 ミクロの冒険-たべものがウンチになるまで- 』 ・・・・ 2021対応あり OK
 医療 アスレチック 『 ミクロの冒険2 -治療計画をはかる- 』 
気管支、肺のあたり
アスレチック風の試み
技術 野外 『 バーチャル高遠さくら発電所 』 ・・・・
-- 見所-- ダム建築
技術 野外 『 ICT建機デモ会場 』 ・・・・
建築土木分野での科学技術表現だね
自然 野外 『 ウユニ塩湖 v2.0 』 ・・・・ 2021対応なし OK
-- 見所-- 雲が流れる  世界遺産もどき
自然 野外 『 大地の果て ver.1.0 』 ・・・・ 2021対応なし △
-- 葉が劣化 自然再現が美しい
自然 野外 『 清流の夏 in a summer brook 』 ・・・・ 7.12更新
-- 水面が劣化 自然再現が美しい
自然 野外 『 清流の夜 』 ・・・・ 7.12更新

Localize を試してみました

水族館の解説パネルが日本語と英語と両方表示すると
長ったらしいので ワールドごと分離してみました
CCKv1.16.0 の新機能 Localize を試してみました
tutorialというより体験記や報告となります

使う新コマンドは2つです
textより画像の方が簡単なので まず そちらから報告。

まず正常にみえる OBJを用意します
 standard material  textureなしでもよいでしょう

 Localized Texture(script)のコンポを追加する 
 これがすり替えのしかけですね



 次にすり替えるデータを用意する
 Projectで右クリックし 
 Create > ScriptableObjects >  Localization > Textures
 謎の .asset ファイルができます
 こちらで 複数設定の textureを 用意します
 このデータを  先程のコンポに D&Dします

結果をUnity上で確認できますね
  sceneではtextureなしですが  
 Play Gameで textureが見えます
 Cluster>preview>setting
 から サーバー言語設定を変更すると
 textureが切り替わったことがわかります

ワールド上で確認する場合は
使用言語を かえて ワールドに入り直します
これで切り替えできているか確認できました
最初は Arabic 簡体中文 しか見えませんでしたが
薄くて気づきにくい右のエレベータをスクロールすると
日本語や英語がみつかりました

textの方も同じパターンです
まず正常に文字が見える OBJを用意します    

というのも、なにもないOBJに 
Localized Text コンポーネントをアタッチすると
 Rect Transform
 text        
 Canvas Renderer
この3つが一緒に追加されるようです
文字が見えません、設定の仕方が思い出せません

文字に関しては以前に作っておいた
presetを使うことにしています
imageとかcanvasの階層がすでについています

これの textコンポーネント がある階層に
Localized Text(script)のコンポを追加します
これがすり替えのしかけですね



次にすり替えるデータを用意します
Projectで右クリックし 
Create > ScriptableObjects >  Localization > Text
謎の .asset ファイルができます
こちらで 複数設定の 文章を 用意します
(ここで改行が無視されることを発見しましたが
 textboxが1行にしか対応してないのかな?
 とりあえず先に進みます )
このデータを  先程のコンポに D&Dします
(これをしないで noneままplayGameするとエラーです
  NullReferenceException:  )
Play gameすると textの中身が
すり替えられているのが確認できます
Textureと違ってすり替え先のtargetが近くにみえます

結果をUnity上やCluster上で確認する方法は前述の通りです
文字の大きさや改行や 実際の表示がどうであるかは
省きます。今まで適当だったし 詳しくないし 
ここまでを報告して 後は詳しい方の解説や注意を待ちます
何か勘違いや間違いがあったらごめんなさい

参考  

https://note.com/cluster_official/n/n23159fb20f5b