nasal脚本起源与环境搭建(flightgear开源项目)

简介: nasal脚本起源与环境搭建(flightgear开源项目)

FlightGear

FlightGear是一款开源飞行模拟器。项目始于1997年,主要目标是为学术科研领域创造一个尖端的飞行模拟器框架,也可拓展到飞行训练,飞行仿真,模拟飞行游戏等方面。

它支持全球三维实景,20,000多个跑道、400多种飞行器、跨平台、多人联飞、多样的开放飞行数据模型等功能。

官网直达 | 中文官网


FlightGear下载

官网:https://www.flightgear.org/

进入官网首页就可以看到大大的【Download Now and Fly Free!】

然后就可以选择对应的版本,如果想添加其他飞机就点击下面的Download Aircraft。

因为我是Win10就选择【FlightGear 2020.3 for windows】链接,然后跳转到下面这个界面,等待下载完成即可。


安装流程较为简单,这里不再赘述,一直下一步即可。

nasal 脚本

nasal脚本起源

NASAL是FlightGear使用的一种非常强大的脚本语言系统,它与FlightGear关系十分密切,可以读取、修改FlightGear的属性树中的属性值,可以函数直接访问FlightGear的内部数据,可以创建GUI对话框,等等。要想深入的理解FlightGear,并对其进行开发,NASAL是一个强有力的工具。


nasal脚本介绍

NASAL全称是Not Another Scripting Language。NASAL借鉴了如Javascript、Python、Perl等流行的脚本语言系统的设计理念,实现了一个简单且完整的OOP(面向对象程序设计)脚本语言系统,并且是不依赖于操作系统平台的。NASAL内置了一个垃圾回收器来管理内存。

NASAL的语法规则有点类似于Javascript。

FlightGear提供了很多用于库函数,这些函数都可以被NASAL直接调用。

NASAL代码可以在FlightGear的aircraft配置文件中调用执行,也可以嵌入到XML文件里面执行。FlightGear中有各种XML文件用于描述对话框、指定物体动作、响应键盘游戏杆的操作、对应场景中的物体等等。这些XML文件中都可以嵌入NASAL代码并执行。


使用FlightGear内置的环境

首先进来是这样一个界面。我们不需要过多的操作,除非你想开飞机。这里我们直接点击左下角的开始飞行

点击上方功能菜单的【Debug】-》【Nasal Console】

然后在代码区中写入代码,然后点击右下角的【Execute】按钮。即可执行脚本。


使用开源的Nasal脚本解释器

这里贴一下这位作者的账号以及开源库

大佬的bilbil账号 | GitHub | Gitee

进不去GitHub的小伙伴可以点击Gitee进入下载。下载好之后大体就是下面这个样子。


在README.md中详细说明了Win\Linux\IOS的环境搭建。下面贴出VS环境的搭建过程。

Create VS project | 创建 VS 工程

First | 首先

Make sure you are using VS 2022.

确保你使用的是 VS 2022。

How to Create VS project

1.Get code from this repo using git.


2.In Visual Studio, click File->New->Project From Existing Code....


3.Select Visual C++->Next->choose project file location->write the project name at ease->Finish.


4.Remove cpp files in module to avoid compilation problems.(they should be compiled to dynamic libraries)


5.Click Source Files in Search Solution Explorer at left, right click main.cpp, compile.


如何创建VS工程

1.用git从这个仓库获取代码。


2.在VS的界面,点击文件(F)->新建(N)->从现有代码创建项目(E)。


3.选择创建Visual C++项目->下一步->项目文件位置选择你下载的代码存放的文件夹->填项目名称,随便写->完成。


4.从项目中去掉 module 里的cpp文件,以防止编译错误。(那些本应该编译到动态库)


5.点开左侧解决方案资源管理器中的Source Files,右键点击main.cpp,编译。


会遇到问题

重定义问题

这里需要注意的是,你不能将model模块添加到vs工程中,否则会报重定义问题,关于这个问题我在bilbil上问过作者。


无法将参数1从WCHAR[260]转换为char

这个问题我也咨询过作者,作者称这是字符集设置的问题,并且已将版本进行更新。

解决方法我贴下面,你们如果使用的话应该不会报这个错误了。


指针类型转换报错

这里我们使用C++11的强制类型转换reinterpret_cast就可以了

解决方法

项目配置

我将项目的输入路径改到项目根路径了,这样方便与库函数查找,否则还需要在项目配置添加库函数的路径。

使用nasal解释器

先将项目进行编译,然后在项目根路径上面路径那块输入cmd,然后回车,就打开cmd并在当前路径下。

然后输入chcp 65001命令,回车。

在当前路径创建一个1.nas的脚本文件。

然后在cmd中输入 nasal.exe 1.nas 回车。

语法:可执行程序 脚本文件

目录
相关文章
|
传感器 监控 安全
无线传感器网络与物联网的融合:未来智慧生活的关键
在信息技术不断发展的时代,无线传感器网络和物联网技术正成为推动智能化进程的重要支撑。本文将介绍无线传感器网络和物联网的基本概念,并探讨了它们融合应用在各个领域的前景和意义。从智能家居、智慧城市到工业制造,无线传感器网络与物联网的结合正引领着我们走向更智慧、便捷的未来。
833 0
|
6月前
|
算法 数据可视化 调度
基于NSGAII的的柔性作业调度优化算法MATLAB仿真,仿真输出甘特图
本程序基于NSGA-II算法实现柔性作业调度优化,适用于多目标优化场景(如最小化完工时间、延期、机器负载及能耗)。核心代码完成任务分配与甘特图绘制,支持MATLAB 2022A运行。算法通过初始化种群、遗传操作和选择策略迭代优化调度方案,最终输出包含完工时间、延期、机器负载和能耗等关键指标的可视化结果,为制造业生产计划提供科学依据。
|
6月前
|
数据采集 人工智能 数据可视化
Harmony os next~鸿蒙系统开发
鸿蒙系统开发简介: 鸿蒙系统(HarmonyOS)是华为自主研发的面向全场景的分布式操作系统。它旨在为不同设备提供统一的操作平台,支持手机、平板、智能穿戴、车机等多种终端。鸿蒙系统具备微内核架构、低时延和高安全性等特性,通过分布式技术实现设备间无缝协同。开发者可以利用其丰富的API和工具链,构建跨平台应用,提升用户体验。
140 0
|
数据采集 数据可视化 定位技术
阿里云百炼智能体与工作流深度联动,打造更灵活的AI+流程开发体验
阿里云百炼平台推出智能体与工作流相互调用功能,支持四种灵活嵌套模式,提升复杂业务流程的复用与自动化能力。通过组件化封装,用户可在智能体中调用工作流,或在工作流中嵌套智能体,显著提高开发效率与系统灵活性,适用于不同技术水平的开发者。
554 0
|
5月前
|
网络协议 前端开发 数据可视化
Apipost免费版、企业版和私有化部署详解
Apipost 是企业级 API 研发协作一体化平台,提供 API 研发、测试、管理全链路解决方案。支持多种协议(HTTP(s)、WebSocket、gRPC 等),助力团队实时协作、降本增效。免费版适合小微团队,具备 API 设计、调试、自动化测试和文档功能;企业版强化全链路资产管理与管控,支持复杂场景测试。此外,私有化部署方案保障数据安全,提供定制化服务与专业支持,满足内网需求企业的要求。
|
8月前
|
搜索推荐 NoSQL Java
微服务架构设计与实践:用Spring Cloud实现抖音的推荐系统
本文基于Spring Cloud实现了一个简化的抖音推荐系统,涵盖用户行为管理、视频资源管理、个性化推荐和实时数据处理四大核心功能。通过Eureka进行服务注册与发现,使用Feign实现服务间调用,并借助Redis缓存用户画像,Kafka传递用户行为数据。文章详细介绍了项目搭建、服务创建及配置过程,包括用户服务、视频服务、推荐服务和数据处理服务的开发步骤。最后,通过业务测试验证了系统的功能,并引入Resilience4j实现服务降级,确保系统在部分服务故障时仍能正常运行。此示例旨在帮助读者理解微服务架构的设计思路与实践方法。
383 17
|
人工智能 数据可视化 定位技术
DataV AI助手小技巧-如何制作PPT数据地图
“数据地图”是PPT汇报地区业务数据的最佳形式之一;以往制作数据地图需要用户有一定的编程和数据处理基础,制作门槛较高;随着DataV整合通义千问大模型能力之后,不懂编程和设计的用户也可以借助AI助手“零代码”制作数据地图,真正实现了人人可用的地图数据可视化。 进入大模型AI时代,人人可以变成职场跨界多面手!
11791 3
DataV AI助手小技巧-如何制作PPT数据地图
|
开发工具
抖音sdk接口,抖音上线下线
抖音sdk接口,抖音上线下线
|
监控 Windows
(1)Mission Planner概述
(1)Mission Planner概述
738 2
|
安全 数据建模 网络安全
深入理解SSL数字证书:定义、工作原理与网络安全的重要性
本文阐述了SSL数字证书在网络安全中的关键作用,定义了其作为验证服务器身份的数字凭证,基于PKI体系保障数据传输安全。文章介绍了三种类型的证书,包括DV、OV和EV,适用于不同安全需求的网站。获取和安装证书涉及向证书颁发机构申请并部署到服务器。在网络安全挑战下,正确使用和管理SSL证书对于保护用户数据和提升信任度至关重要。
699 2