当前位置: 首页 > news >正文

轻量封装WebGPU渲染系统示例<34>-数据驱动之Json构建场景

场景和数据之间的互通: 场景数据化或者数据化场景,是当前的主流场景数据构成方式。方便传输方便交换甚至是交互。

内置数据互通机制更有利于用户在各种应用场合下实现具体的3D相关的应用需求。用户只需要关心标准的或者约定好的数据定义及操作方式就能方便使用。

这样,也能方便应用GLB或者USD数据规范。

当前示例源码github地址:

https://github.com/vilyLei/voxwebgpu/blob/feature/rendering/src/voxgpu/sample/DataDrivenTest.ts

当前示例运行效果:

json数据:

{"renderer": {"camera": { "eye": [1100, 1100, 500], "up": [0, 1, 0] }},"entities": [{ "axis": { "entity": { "size": 500 } } },{ "sphere": { "entity": { "radius": 80, "transform": { "position": [0, 0, 200] }, "albedo": [0.9, 0.1, 0.02], "arm": { "a": 1.0, "r": 0.2, "m": 0 } } } },{"cube": {"entity": {"size": 80,"transform": { "position": [200, 0, 0], "scale": [2, 1.5, 3], "rotation": [-190, 0, 200] },"albedo": [0.1, 0.9, 0.02],"arm": { "a": 1.0, "r": 0.2, "m": 0 },"animate": {}}}},{"torus": {"entity": {"radius": 90,"axisType": 1,"longitudeNumSegments": 20,"latitudeNumSegments": 50,"transform": { "position": [0, 150, 0] },"albedo": [0.9, 0.1, 0.7],"arm": [1.0, 0.3, 0]}}},{"model": {"entity": {"url": "static/assets/draco/monkey.drc","transform": { "position": [0, 320, 0], "scale": [100, 100, 100], "rotation": [0, 90, 0] },"albedo": [0.1, 0.7, 0.9],"arm": [1, 0.3, 0.1]}}},{"boundsFrame": {"entity": {"minPos": [-300, -300, -300],"maxPos": [300, 300, 300],"frameColor": [0.9, 1.0, 0.1]}}},{"gltf": { "entity": {} }},{"usd": { "entity": {} }}]
}

此示例基于此渲染系统实现,当前示例TypeScript源码如下:

export class DataDrivenTest {private mScene = new DataDrivenRScene();initialize(): void {let url = "static/assets/scene/sceneData01.json";new HttpFileLoader().loadJson(url,(json: object, url: string): void => {console.log("json: ", json);this.initScene(json);});}private initScene(json: object): void {this.mScene.initialize(json);this.initEvent();}private initEvent(): void {const rc = this.mScene;new MouseInteraction().initialize(rc.rscene, 0, false).setAutoRunning(true);}run(): void {this.mScene.run();}
}

http://www.lryc.cn/news/233704.html

相关文章:

  • 全局异常拦截和Spring Security认证异常的拦截的顺序
  • Hive Lateral View explode列为空时导致数据异常丢失
  • 音频类型转换工具-可执行文件exe/dmg制作
  • 【Proteus仿真】【51单片机】公交车报站系统
  • C++--STL总结
  • Python----图像的手绘效果
  • Android13集成paho.mqtt.android启动异常
  • STM框架之按键扫描新思路
  • Linux服务器挂载另一台服务器的文件夹(mount)
  • 剑指offer --- 用两个栈实现队列的先进先出特性
  • 流媒体协议
  • ClickHouse的分片和副本
  • C语言编程陷阱(五)
  • chardet检测文件编码,使用生成器逐行读取文件
  • html所有标签和DOCTYPE的总结
  • 2023年11月15号期中测验判断题(Java)
  • 基于 selenium 实现网站图片采集
  • vue3相关内容
  • AWTK实现汽车仪表Cluster/DashBoard嵌入式GUI开发(七):FreeRTOS移植
  • 《洛谷深入浅出进阶篇》P1995 程序自动分析——并查集,离散化
  • 基于单片机的自动循迹小车(论文+源码)
  • linux系统中安装python到指定目录
  • 分布式事务 - seata安装
  • CentOS to 浪潮信息 KeyarchOS 迁移体验与优化建议
  • Go解析soap数据和修改其中数据
  • LeetCode98. Validate Binary Search Tree
  • 【LeetCode】206. 反转链表
  • 飞天使-通过GET 和POST进案例演示
  • 【MySql】12- 实践篇(十)
  • <C++> 反向迭代器