Skip to content

Commit

Permalink
glTFへの属性情報付与 (#268)
Browse files Browse the repository at this point in the history
大きいPRですみません!
これでも出来ていないことが多いんですが、流石に大きすぎる気がするので、一旦ここで切らせてください…!

### やったこと

- 主に建築物に対して、属性情報を付与し、Cesium上で表示できるようにした

### 出来ていないこと

- sinkに流れてくるEntityに複数の主題属性が含まれている場合、属性情報がうまく表示されない
- 文字列とスカラー以外の属性情報は、JSON文字列化しているため、ハンドリングする必要がある
- nullの属性情報は適当に「0」を格納している
- 処理を行うだけのコードになっていて、再利用できない

### 確認方法

- 以下のようなコマンドを実行

```bash
cargo run -p nusamai -- ~/plateau/22203_numazu-shi_2021_citygml_4_op/udx/bldg/52385654_bldg_6697_op.gml --sink gltf --output ~/MIERUNE/nusamai/demo/cesium/examples/ext_structural_metadata/test.glb
```

- ローカルサーバーを立ち上げる

```bash
cd demo/cesium/
python -m http.server
```

- `http://localhost:8000/gltf_ext_structural_metadata.html`を確認

<img width="1872" alt="image"
src="https://github.com/MIERUNE/nusamai/assets/31245655/65f31fad-8f0a-4ed6-bd74-c36a37e0e4bd">

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **新機能**
	- 3Dモデルに`EXT_mesh_features`拡張機能をサポートするための新しいファイル`test.gltf`を追加しました。
	- GLTFファイルに構造メタデータ拡張機能を追加し、建物のタイプ、高さ、建設詳細などの属性とプロパティを定義しました。
	- フィーチャーIDに基づいて拡散色を計算するためのフラグメントシェーダーのロジックを変更しました。
	- CityGMLスキーマ属性をglTFスキーマプロパティにマッピングする機能を導入しました。
	- GLTFデータ構造を構築および書き込む機能を実装しました。

- **バグ修正**
-
`viewer`の初期化を更新し、`tileset.modelMatrix`と`viewer.zoomTo`の設定をカメラコントローラーのプロパティの設定と地形の深さテストの有効化に置き換えました。

- **リファクタ**
	- 複数の構造体と列挙型に`Clone`トレイトを追加し、これらのタイプのインスタンスを複製できるようにしました。
	- `Gltf`構造体内の`others`フィールドの可視性を`pub`に変更し、モジュール外からアクセス可能にしました。
- `nusamai/src/sink/gltf/mod.rs`内のモジュールを再構成し、新しいサブモジュールを導入し、コードを再編成しました。

- **スタイル**
	- コードの一部の命名規則を変更しました(例: `GltfPoc`から`Gltf`へ)。
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
  • Loading branch information
nokonoko1203 authored Feb 19, 2024
1 parent e73b534 commit f79f65f
Show file tree
Hide file tree
Showing 26 changed files with 2,275 additions and 1,029 deletions.
126 changes: 0 additions & 126 deletions demo/cesium/examples/ext_mesh_features/FeatureIdAttribute.gltf

This file was deleted.

Binary file modified demo/cesium/examples/ext_mesh_features/test.glb
Binary file not shown.
87 changes: 87 additions & 0 deletions demo/cesium/examples/ext_mesh_features/test.gltf
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
{
"extensionsUsed": ["EXT_mesh_features"],
"accessors": [
{
"bufferView": 0,
"componentType": 5126,
"count": 22562,
"type": "VEC3",
"max": [527.1293573356234, 387.3888158304617, 542.6486890139058],
"min": [-527.1293573356234, -387.388815829996, -542.6486890139058]
},
{
"bufferView": 1,
"componentType": 5125,
"count": 115440,
"type": "SCALAR"
},
{
"bufferView": 2,
"componentType": 5125,
"count": 22562,
"type": "SCALAR"
}
],
"asset": {
"generator": "nusamai-gltf",
"version": "2.0"
},
"bufferViews": [
{
"buffer": 0,
"byteLength": 270744,
"target": 34962
},
{
"buffer": 0,
"byteOffset": 270744,
"byteLength": 461760,
"target": 34963
},
{
"buffer": 0,
"byteOffset": 732504,
"byteLength": 90248,
"target": 34962
}
],
"buffers": [
{
"byteLength": 822752
}
],
"meshes": [
{
"primitives": [
{
"attributes": {
"_FEATURE_ID_0": 2,
"POSITION": 0
},
"indices": 1,
"extensions": {
"EXT_mesh_features": {
"featureIds": [
{
"featureCount": 22562,
"attribute": 0
}
]
}
}
}
]
}
],
"nodes": [
{
"mesh": 0,
"translation": [-3929620.269123388, 3649625.761440213, -3439457.322811205]
}
],
"scenes": [
{
"nodes": [0]
}
]
}

This file was deleted.

Loading

0 comments on commit f79f65f

Please sign in to comment.