工业仿真

A collection of 11 posts
Chai 3D之触觉渲染
工业仿真

Chai 3D之触觉渲染

推荐:将 NSDT场景编辑器 加入你的3D开发工具链 介绍  在以下部分中,我们将介绍用于将触觉设备连接到虚拟世界的基本类和算法。 工具   工具是一种 3D 对象,用于在虚拟世界中连接、建模和显示触觉设备。工具由一个或多个称为触觉点 (cHapticPoint) 的接触球体以图形方式建模,这些接触球体对触觉设备与环境之间的交互进行建模。最简单的工具 (cToolCursor) 使用单个球体,而夹持器工具 (cToolGripper) 使用两个或多个接触点来模拟类似抓取的交互(拇指和手指)。   一组力渲染算法(cAlgorithmFingerProxy和cAlgorithmPotentialField)用于计算触觉点和环境之间的相互作用力,与每个触觉点(cHapticPoint)相关联。遇到的对象类型决定了使用哪种强制渲染算法。   一旦计算了工具每个触觉点的所有接触力,产生的力将组合在一起并转换为发送到触觉设备的力、扭矩和夹持力。   以下代码演示如何创建单点接触工具(光标)并将其连接到触觉设备。 using namespace chai3d; // crea
7 min read
工业仿真

Chai 3D之音频

推荐:将 NSDT场景编辑器 加入你的3D开发工具链 介绍   如果没有某种音频,无论是背景音乐还是声音效果,交互式应用程序都是不完整的。CHAI3D 的音频课程结合了灵活而强大的 OpenAL 框架。CHAI3D 目前支持 WAV 音频文件格式,并具有在与对象的工具和材料属性相关的 3D 空间中播放声音的复杂功能。 基本概念   在现实生活中,声音由物体发出,并由听众听到。感知声音的方式取决于许多因素。听者可以大致分辨出声音来自哪个方向,并且还可以从其响度和质量中获得一些距离。由于多普勒效应,快速移动的声源(如飞机或路过的警车)在移动时音调会发生变化。   为了模拟位置的效果,CHAI3D 要求声音源自附加到对象的音频源 (cAudioSource)。然后,发出的声音由连接到另一个对象(通常是主摄像机)的音频侦听器(cAudioDevice)拾取。然后,CHAI3D 可以模拟源与听者对象的距离和位置的影响,并相应地向用户播放。源和侦听器的相对速度也可用于模拟多普勒效应以增加真实感。 using namespace chai3d; // create an
2 min read
Chai 3D之鼠标拾取
工业仿真

Chai 3D之鼠标拾取

推荐:将 NSDT场景编辑器 加入你的3D开发工具链 介绍   鼠标拾取是一种常用的直观操作,用于与各种 3D 图形应用程序中的 3D 场景进行交互。CHAI3D 提供了一些基本功能来检测对象是否已被选中。鼠标选择过程需要首先设置碰撞记录器和所需的碰撞设置。下面的清单说明了一个基本示例。 using namespace chai3d; cCollisionRecorder recorder; cCollisionSettings settings; // detect for any collision between mouse and scene bool hit = camera->select(x, y, windowWidth, windowHeight, recorder, settings);   碰撞记录器首先是空的,并累积位于鼠标指针下方的选定对象。为每个碰撞事件返回的信息存储在 cCollisionEvent 结构中。这样的结构将包含指向对象的指针、鼠标点击的3D位置信息、选定的三角形(cMesh)和表面法线。
2 min read
工业仿真

Chai 3D :组件工具

推荐:将 NSDT场景编辑器 加入你的3D开发工具链 介绍   在 CHAI3D 中,小部件是以 2D 形式显示数据和状态信息的主要元素。每个摄像机都包含一个前层和后层,可以在其上附加小部件。渲染摄像机场景时,首先渲染 2D 背景图层,然后渲染 3D 世界,最后渲染 2D 前图层。 在下一节中,我们将回顾其中一些基本小部件。 面板   cPanel 可用于在窗口上放置一个空面板。面板具有用于提供圆角、颜色和材料纹理属性的属性。面板由其宽度定义,高度可以放置在视口中的任何位置。 using namespace chai3d; // create a panel cPanel* panel = new cPanel(); // add panel to front layer of camera camera->
7 min read
Chai 3D之灯光与阴影
工业仿真

Chai 3D之灯光与阴影

推荐:将 NSDT场景编辑器 加入你的3D开发工具链 介绍   光是人类可以视觉感知的任何事物的视觉表示背后的最重要的思想。光感知的概念在于,你所看到的不是基于你正在观看的物体,而是基于光源投射并从这些物体反射的光线。重要的是要注意,你的眼睛不会直接看到物体,因为你的眼睛和这些物体之间没有物理相关性。   当然,所有这些都是理论上的。我们使用术语光线只是抽象出更复杂的机制。   光线通常来自能量来源,例如太阳或房间内的灯。重要的是要注意,从理论上讲,光线沿直线传播,当您在视觉上感知物体时,您的眼睛吸收的是该物体反射或散射的光线。 光的抽象类型   以下术语描述了在对需要光源的 3D 应用程序进行编程时必须了解的不同类型的光。了解每种类型的光在渲染的 3D 对象表面上产生的效果非常重要。创建这些术语是因为需要描述光对物体产生的某些效果,以便提炼出光的复杂数学计算。然而,这并不意味着这些确切类型的光实际上存在于自然界中,我们只是将它们视为光投射在不同材料上时可能产生的效果的抽象。计算光的真实机制及其在自然界中的工作方式将非常耗时,因此,OpenGL 通常采用这组常见的光类型
12 min read
Chai 3D之材质和纹理
AI人工智能

Chai 3D之材质和纹理

推荐:将 NSDT场景编辑器 加入你的3D开发工具链 介绍   在本章中,我们将介绍材料和纹理属性。这些概念在 CHAI3D 中被广泛用于描述物体在视觉和触觉上的外观。 材料特性   材料属性定义表面如何反射光线。他们通过定义颜色值来实现这一点,其方式与灯光大致相同。材质具有漫射(直射)光、环境(散射)光和镜面反射(反射)光的颜色值,但这些值定义了光分量如何从材质表面反射。入射光颜色与相应的材料颜色相结合,结果颜色就是我们在屏幕上看到的颜色。   这些材料值仅对光源有意义。例如,如果您的材质反射环境光(即材质m_ambient设置具有颜色值),如果没有来自光源的环境光,它仍将显示为黑色。同样,漫反射材质颜色可能是黄色,但如果漫反射光颜色为绿色,则它将显示为绿色。   材质的镜面反射值通常是白色、灰色或黑色,因为它没有自己的色调,而是反射照射在其上的光线的色调。将此颜色值视为定义将反射的光的百分比。   还有一个额外的材质设置,即光泽度,用于定义表面反射的大小。下面是一个简单的示例,我们在其中定义了对象的环境、漫反射和镜面反射分量。 using namespace c
8 min read
Chai  3D之色彩
工业仿真

Chai 3D之色彩

推荐:将 NSDT场景编辑器 加入你的3D开发工具链   介绍   颜色是人类与红色、蓝色、黄色、绿色等类别相对应的视觉感知属性。颜色来源于光的光谱(光功率与波长的分布)在眼睛中与光感受器的光谱灵敏度相互作用。颜色类别和颜色的物理规格也与物体、材料、光源等相关联,基于其物理性质,例如光吸收、反射或发射光谱。通过定义颜色空间,可以通过颜色的坐标以数字方式标识颜色。 RGB色彩空间   RGB 颜色模型是一种加法颜色模型,其中红色、绿色和蓝色光以各种方式加在一起以再现各种颜色。模型的名称来自三种加法原色(红色、绿色和蓝色)的首字母缩写。RGB 颜色模型的主要用途是用于在电子系统(如电视和计算机)中感测、表示和显示图像。要使用 RGB 形成颜色,必须叠加三个彩色光束(一个红色、一个绿色和一个蓝色)(例如,通过黑屏发射或白屏反射)。三个光束中的每一个都被称为该颜色的分量,并且它们中的每一个都可以在混合物中具有从完全关闭到完全打开的任意强度。RGB 颜色模型是累加的,因为三个光束加在一起,它们的光谱逐波长相加,形成最终颜色的光谱。   每个分量的零强度表示最暗的颜色(
7 min read
Chai 3D之形状基元
工业仿真

Chai 3D之形状基元

推荐:将 NSDT场景编辑器 加入你的3D开发工具链 介绍   虽然网格对象的通用性令人难以置信,但当多边形数量变大时,在工具和对象之间执行碰撞检测所需的计算量可能会变得很大。为了解决这个问题,CHAI3D 提供了一系列可用于模拟简单形状的基元,如球体、圆柱体、盒子等。隐式模型不是计算与大型三角形集的碰撞,而是用于快速计算工具是位于形状内部还是外部。通过将这些模型与触觉效果相结合,我们可以大大减少计算触觉设备和环境之间交互力所需的计算量。 长方体对象 下面的示例演示如何创建框对象并指定表面触觉效果。 using namespace chai3d; // create a box and define its dimensions object = new cShapeBox(0.1, 0.2, 0.3) // add object to world world->addChild(object); // set haptic properties object->
3 min read
Chai  3D之体积对象
AI人工智能

Chai 3D之体积对象

推荐:将 NSDT场景编辑器 加入你的3D开发工具链 介绍   体积渲染对于需要可视化三维数据集的科学和工程应用至关重要。示例包括由医学成像设备获取的数据或计算流体动力学模拟产生的数据的可视化。交互式体积渲染应用程序的用户依靠现代图形加速器的性能来实现高效的数据探索和功能发现。 体素数据   体素表示三维空间中规则网格上的值。体素是“体积”和“像素”的组合,其中像素是“图片”和“元素”的组合。与位图中的像素一样,体素本身通常不会将其位置(坐标)与其值一起显式编码。相反,体素的位置是根据其相对于其他体素的位置(即它在构成单个体积图像的数据结构中的位置)推断的。与像素和体素相反,点和面通常由其顶点的坐标显式表示。这种差异的直接结果是,多边形能够有效地表示具有大量空空间或均匀填充空间的简单 3D 结构,而体素擅长表示非均匀填充的常规采样空间。   体素经常用于医学和科学数据的可视化和分析。某些体积显示器使用体素来描述其分辨率。例如,显示器可能能够显示 512x512x512 体素。 体素对象   体积对象在 CHAI3D 中使用名为 cVoxelObject 的类实现,其
4 min read
Chai  3D之线段
AI人工智能

Chai 3D之线段

推荐:将 NSDT场景编辑器 加入你的3D开发工具链 介绍   在几何中,线段是由两个不同端点限定的直线的一部分,包含其端点之间的直线上的每个点。闭合线段包括两个端点。 线段对象   与网格对象类似,线段模型使用顶点来描述组成对象的所有线。手指代理算法还用于计算触觉工具和对象之间的所有相互作用力。还必须在创建所有点后初始化碰撞检测。 using namespace chai3d; // create a line segment object cMultiSegment* segments = new cMultiSegment(); // add object to world world->addChild(segments); // connect some segments to form a spring double h = 0.0; double dh = 0.001; double a
2 min read
Chai 3D之点云技术
AI人工智能

Chai 3D之点云技术

推荐:将 NSDT场景编辑器 加入你的3D开发工具链。 介绍   点云是三维坐标系中的一组数据点。在 CHAI3D 中,这些点由 X、Y 和 Z 坐标定义,通常用于表示对象的外表面。   点云可以由3D扫描仪创建。这些设备测量物体表面上的大量点,并通常将点云输出为数据文件。点云表示设备已测量的点集。 点云对象   与网格对象类似,点云模型使用顶点来描述组成云的所有点。手指代理算法还用于计算触觉工具和对象之间的所有相互作用力。还必须在创建所有点后初始化碰撞检测。 using namespace chai3d; // create a virtual mesh cloud = new cMultiPoint(); // add object to world world->addChild(cloud); // load point cloud cloud->loadFromFile("myPointCloud.obj"); // create
1 min read
NSDT场景编辑器 | NSDT 数字孪生 | GLTF在线编辑器 | 3D模型在线转换 | UnrealSynth虚幻合成数据生成器 | 3D模型自动纹理化工具
2023 power by nsdt©鄂ICP备2023000829号