Cesium 实战 - Blender调整模型组件原点,实现直升机尾翼旋转

news2024/12/23 7:31:13

Cesium 实战 - Blender调整模型组件原点,实现直升机尾翼旋转

    • 1.模型原点问题
    • 2.导入模型(zhisheng.glb)
    • 3.导出模型
    • 4. 通过 czml 调试代码

某个项目需求,在操作直升机模型的时候,希望直升机机翼和尾翼旋转起来。

机翼旋转比较容易,找到组件名称,按照之前的 《Cesium 实战 - AGI_articulations 扩展:模型自定义关节动作》设置即可实现。

但是在设置尾翼的时候,出现问题,这里记录一下问题以及解决方法。

本文介绍使用 Blender软件调整模型的某个组件的原点,解决某个模型组件旋转中心点错误的问题。


1.模型原点问题

在 gltf-vscode 项目工具中,增加关节旋转之后,发现某个组件没有按组件的中心点旋转,而是按整个模型的中心点旋转。

随着直升机尾翼旋转参数的调整,尾翼绕直升机的中心点旋转,如下图:

红色圆圈是尾翼的旋转线路,黄色小圆圈是旋转中心点。

在这里插入图片描述

调整旋转角度之后尾翼的位置:
在这里插入图片描述

再次调整旋转角度之后尾翼的位置:
在这里插入图片描述
解决办法:通过Blender设置模型尾翼组件的原点位置即可。

2.导入模型(zhisheng.glb)

(1)双击打开软件

在这里插入图片描述
(2)选中默认元素,按delete删除

在这里插入图片描述

(3)点击 File-import-gltf/glb,也可以选择导入其他格式。

在这里插入图片描述

(4)导入成功,选中直升机尾翼组件。

在这里插入图片描述
选中尾翼之后,右键-设置原点-原点-几何中心

在这里插入图片描述

3.导出模型

(1)不用保存Blender文件,直接导出模型

File-export-glft。这里需要导出为 glTF 或者 GLB。

在这里插入图片描述

在这里插入图片描述

在 gltf-vscode 项目工具中,设置关节动作之后,调整尾翼旋转角度,尾翼会按照正确的中心点旋转:

在这里插入图片描述

在这里插入图片描述

总结:模型组件可能会有不同的局部坐标原点,根据实际需求调整即可。

导出成功之后,可以参考《Cesium 实战 - AGI_articulations 扩展:模型自定义关节动作》来查看是否设置成功。

4. 通过 czml 调试代码

const czml = [
    {
        "id": "document",
        "name": "SpaceX",
        "version": "1.0",
        // 需要注意的是,整个地球对象公用一个时钟系统,如果加载多个 czml,请保证时间一致
        // 渲染加载其他时钟相关的对象,也要注意时间一致
        "clock": {
            // 运动的时间区间
            "interval": "2023-06-14T10:00:00Z/2023-06-14T10:17:33Z",
            // 当前时间
            "currentTime": "2023-06-14T10:00:00Z",
            // 运动速率
            "multiplier": 50,
            // 是否循环:CLAMPED 不循环;LOOP_STOP 循环
            "range": "CLAMPED",
            // cesium 系统时钟速率
            "step": "SYSTEM_CLOCK_MULTIPLIER"
        }
    },
    // J15 主体
    {
        "id": "Vulcan",
        "availability": "2023-06-14T10:00:00Z/2023-06-14T10:17:33Z",
        "name": "Vulcan",
        // 运动路径
        "path": {
            "show": [
                {
                    "interval": "2023-06-14T10:00:00Z/2023-06-14T10:17:33Z",
                    "boolean": true
                }
            ],
            "width": 5,
            "resolution": 1,
            "leadTime": [
                {
                    "interval": "2023-06-14T10:00:00Z/2023-06-14T10:17:33Z",
                    "epoch": "2023-06-14T10:00:00Z",
                    "number": [
                        0, 1053,
                        1053, 0
                    ]
                }
            ],
            "trailTime": [
                {
                    "interval": "2023-06-14T10:00:00Z/2023-06-14T10:17:33Z",
                    "epoch": "2023-06-14T10:00:00Z",
                    "number": [
                        0, 0,
                        1053, 1053
                    ]
                }
            ],
            "material": {
                polylineGlow: {
                    color: [{
                        "interval": "2023-06-14T10:00:00Z/2023-06-14T10:10:00Z",
                        rgba: [255, 0, 0, 255],
                    },
                        {
                            "interval": "2023-06-14T10:10:00Z/2023-06-14T10:13:20Z",
                            rgba: [0, 0, 255, 255],
                        }
                    ],
                    glowPower: 0.25,
                    // taperPower: 0.5,
                },
            },
        },
        // 模型
        "model": {
            "show": true,
            "gltf": [
                {
                    "interval": "2023-06-14T10:00:00Z/9999-12-31T23:59:59.9999999Z",
                    "uri": "./staticForMap/assets/model/zhishegnji_rotor.glb"
                },
            ],
            "minimumPixelSize": 256,
            "scale": 3,
            "runAnimations": false,
            // 自定义动作,需要模型存在自定义关节属性
            "articulations": {
                // RotateX 为 glTF 中自定义的关节名称
                "main_rotor RotateZ": {
                    "epoch": "2023-06-14T10:00:00Z",
                    "number": [
                        // 当前 epoch 时刻,第 0 秒的时,X 轴旋转角度(度)
                        0, 0,
                        1800, 3600000000,
                        // 150, -25,
                        // 300, -80,
                    ]
                },
                "rear_rotor RotateX": {
                    "epoch": "2023-06-14T10:00:00Z",
                    "number": [
                        // 当前 epoch 时刻,第 0 秒的时,X 轴旋转角度(度)
                        0, 0,
                        1800, 3600000000,
                        // 150, -25,
                        // 300, -80,
                    ]
                },
            }
        },
        // 运动位置
        "position": {
            // 插值
            "interpolationAlgorithm": "LAGRANGE",
            "interpolationDegree": 2,
            "referenceFrame": "FIXED",
            "epoch": "2023-06-14T10:00:00Z",
            // 位置信息
            // 时间、x、y、z
            "cartesian": [
                0.000, -2181756.507204248, 4401502.463808623, 4082345.0951582263,
                300.000, -2221900.867803482, 4405392.727091728, 4056473.1271699946,
                600.000, -2252772.6404420133, 4418632.02508438, 4025043.2226449093,
                900.000, -2298167.906071293, 4420521.33707002, 3997259.6931305756,
            ]
        },
        // 方向
        "orientation": {
            // 自动计算运动朝向
            "velocityReference": "#position"
        },
    },
];

const viewer = new Cesium.Viewer("cesiumContainer", {
  shouldAnimate: true,
});

const dataSourcePromise = viewer.dataSources.add(
  Cesium.CzmlDataSource.load(czml)
);

dataSourcePromise
  .then(function (dataSource) {
    viewer.trackedEntity = dataSource.entities.getById("test model");
  })
  .catch(function (error) {
    console.error(error);
  });

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/796593.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

多项目进度把控:选择合适的项目管理系统助力无忧

我相信很多企业都在使用项目管理系统,但你有没有想过为什么要使用这些工具?想象一下,如果我们使用传统的而不是这些项目管理系统,excel或work一些简单的在线文档记录能满足我们的需求吗?当需求发生变化时,这…

前端学习——Vue (Day5)

自定义指令 <template><div><h1>自定义指令</h1><input v-focus ref"inp" type"text" /></div> </template><script> export default {// mounted(){// this.$ref.inp.focus()// }// 2. 局部注册指令di…

桥梁安全监测系统中数据采集上传用 什么?

背景 2023年7月6日凌晨时分&#xff0c;G5012恩广高速达万段230公里加80米处6号大桥部分桥面发生垮塌&#xff0c;导致造成2车受损后自燃&#xff0c;3人受轻伤。目前&#xff0c;四川省公安厅交通警察总队高速公路五支队十四大队民警已对现场进行双向管制。 作为世界第一桥梁…

亚马逊云科技纽约峰会官宣生成式AI产品策略升级

作为云计算领域的领导者和创新者&#xff0c;生成式AI&#xff08;Generative AI&#xff09;一直是亚马逊云科技持续关注和投入的主要方向。在今年4月&#xff0c;亚马逊云科技发布了以Amazon Bedrock为代表的生成式AI产品全家桶&#xff0c;正式入局该赛道并宣布了亚马逊云科…

进程信息查看脚本

一、shell 脚本 该脚本可以根据进程名和进程pid查询进程信息。 输出的进程信息包括&#xff1a;进程 PID、进程命令、进程所属用户、CPU占用率、内存占用率等 查询可选择模式&#xff1a;仅一次还是不限次。 #! /bin/bashprintProcessInfo(){P$1echo "------------------…

15 文本编辑器vim

15.1 建立文件命令 如果file.txt就是修改这个文件&#xff0c;如果不存在就是新建一个文件。 vim file.txt 使用vim建完文件后&#xff0c;会自动进入文件中。 15.2 切换模式 底部要是显示插入&#xff0c;是编辑模式&#xff1b; 按esc&#xff0c;底部要是空白的&#xff0…

NetCore 使用 Swashbuckle 搭建 SwaggerHub

什么是SwaggerHub? Hub 谓之 中心, 所以 SwaggerHub即swagger中心. 什么时候需要它? 通常, 公司都拥有多个服务, 例如商品服务, 订单服务, 用户服务, 等等, 每个服务都有自己的environment, endpoint, swagger schema. 然而这些信息都分散在各处, 如果能集中在一个地方展示…

自主AI代理:未来的生产力引擎

摘要 文章介绍了自主AI代理的概念&#xff0c;AI代理由AI驱动&#xff0c;能够自我创建、优先处理和完成任务。自主AI代理可以执行任何数量的任务&#xff0c;包括内容创建、个人助手、个人财务管理、研究和数据分析等。文章强调了知识、记忆和学习在构建成功的自主AI代理中的重…

任务与项目的巧妙运用:项目管理软件的有效实践方法

如果您不熟悉项目管理或以前依赖任务管理系统来管理您的项目&#xff0c;那么任务和项目之间的区别可能会令人困惑。任务和项目是项目管理软件中的主要构建块&#xff0c;使您能够跟踪和组织您的工作。 任务是需要在项目中完成的单个工作单元。项目是需要一起完成以实现单个结果…

Linux数据处理三剑客

目录&#xff1a; Linux 三剑客之 greplinux三剑客之awklinux三剑客之sedlinux三剑客与管道使用【实战】三剑客实战之nginx日志分析实战【实战】三剑客实战之性能、网络统计实战linux进阶命令linux环境配置Linux与Bash编程实战 1.Linux 三剑客之 grep 内容检索:&#xff08;…

高电压放大器ATA-2021B在无损检测领域中的应用

超声无损检测&#xff08;UltrasonicNondestructiveTesting&#xff0c;简称UT&#xff09;是一种常用的材料及构件内部缺陷检测技术。它利用超声波在材料中传播的特性&#xff0c;通过接收回波信号来检测材料内部的缺陷情况。超声无损检测具有精度高、快速、非破坏性等优点&am…

k8s Webhook 使用java springboot实现webhook 学习总结

k8s Webhook 使用java springboot实现webhook 学习总结 大纲 基础概念准入控制器&#xff08;Admission Controllers&#xff09;ValidatingWebhookConfiguration 与 MutatingWebhookConfiguration准入检查&#xff08;AdmissionReview&#xff09;使用Springboot实现k8s-Web…

【录用案例】2区SCI,仅14天见刊!

近日新增两本2区SCI录用&#xff0c;期刊表现质量优&#xff0c;均是隶属于世界前列的出版社&#xff0c;好刊版面紧俏&#xff0c;可放心投稿&#xff01;录用案例如下&#xff0c;可重点参考&#xff1a; 计算机科学类SCI&EI 【影响因子】IF&#xff08;2022&#xff0…

Microsoft todo 数据导出

文章目录 官方说明&#xff1a; https://support.microsoft.com/zh-cn/office/导出您的-microsoft-待办事项帐户-d286b243-affb-4db4-addc-162e16588943 由于 微软待办 会自动与 Outlook 中的任务同步&#xff0c;因此您可以从 Outlook 中导出所有列表和任务。 若要导出列表和…

Docker 安全 Docker HTTPS请求过程与配置

Docker 容器安全注意点 尽量别做的事 尽量不用 --privileged 运行容器&#xff08;授权容器root用户拥有宿主机的root权限&#xff09; 尽量不用 --network host 运行容器&#xff08;使用 host 网络模式共享宿主机的网络命名空间&#xff09; 尽量不在容器中运行 ssh 服务 尽…

11.对象

11.1什么是对象 ●对象(object) : JavaScript里的一种数据类型 ●可以理解为是一种无序的数据集合&#xff0c;注意数组是有序的数据集合 11.2对象的使用 1.对象的声明语法 &#xff08;1&#xff09;let对象名 {} &#xff08;2&#xff09;let对象名new Object() // {} …

vue实现flv格式视频播放

公司项目需要实现摄像头实时视频播放&#xff0c;flv格式的视频。先百度使用flv.js插件实现&#xff0c;但是两个摄像头一个能放一个不能放&#xff0c;没有找到原因。&#xff08;开始两个都能放&#xff0c;后端更改地址后不有一个不能放&#xff09;但是在另一个系统上是可以…

振弦采集仪及在线监测系统完整链条的岩土工程隧道安全监测

振弦采集仪及在线监测系统完整链条的岩土工程隧道安全监测 近年来&#xff0c;随着城市化的不断推进和基础设施建设的不断发展&#xff0c;隧道建设也日益成为城市交通发展的必需品。然而&#xff0c;隧道建设中存在着一定的安全隐患&#xff0c;如地质灾害、地下水涌流等&…

Python(四十三)else语句

❤️ 专栏简介&#xff1a;本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中&#xff0c;我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 &#xff1a;本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…

实用人工智能 2.0,在线“学习、探索和构建”ML 模型

人工智能爱好者过去需要在一个好的GPU上投资数千美元才能“动手”进行机器学习&#xff0c;但现在一个简单的网络浏览器就足够了。总部位于硅谷的非营利组织PracticalAI最近发布了“PracticalAI2.0”&#xff0c;该平台包括TensorFlow 2.0Keras中的说明性机器学习课程&#xff…