举荐:将 NSDT场景编辑器 退出你的3D开发工具链
介绍
在 CHAI3D 中,小部件是以 2D 模式显示数据和状态信息的次要元素。每个摄像机都蕴含一个前层和后层,能够在其上附加小部件。渲染摄像机场景时,首先渲染 2D 背景图层,而后渲染 3D 世界,最初渲染 2D 前图层。在下一节中,咱们将回顾其中一些根本小部件。
CHAI3D中的小部件
面板
cPanel 可用于在窗口上搁置一个空面板。面板具备用于提供圆角、色彩和资料纹理属性的属性。面板由其宽度定义,高度能够搁置在视口中的任何地位。
using namespace chai3d;// create a panelcPanel* panel = new cPanel();// add panel to front layer of cameracamera->m_frontLayer->addChild(panel);// set width and height of panelpanel->setSize(300, 200);// assign radius of each corner of panelpanel->setCornerRadius(10, 10, 10, 10);// assign a position (x,y) to panelpanel->setLocalPos(40, 60);// set a uniform color to panelpanel->setColor(cColorf(1.0, 0.5, 0.5));// assign a transparency level to panelpanel->setTransparencyLevel(0.5);
位图
应用程序能够将位图小组件增加到其用户界面以显示图像。图像及其原点显示在微件指标矩形的左下角,并且能够沿 X 轴和 Y 轴拉伸。
using namespace chai3d;// create bitmap objectcBitmap* bitmap = new cBitmap();// add bitmap to front layer of cameracamera->m_frontLayer->addChild(bitmap);// load image filebitmap->loadFromFile("myImage.png");
背景
背景构件可用于显示笼罩整个显示窗口的图像。
// create a background objectcBackground* background = new cBackground();// add background to back layer of cameracamera->m_backLayer->addChild(background);// set aspect ration of background image a constantbackground->setFixedAspectRatio(true);// load an image filebackground->loadFromFile("myImage.png");
示例 05-字体:背景图像笼罩整个窗口
水平仪
水平仪是一个线性仪表小部件,用于让用户疾速理解值在肯定范畴内的地位。程度能够程度或垂直设置。
using namespace chai3d;// create dial objectlevel = new cLevel();// add level to front layer of cameracamera->m_frontLayer->addChild(level);// set range of values displayed by levellevel->setRange(0.0, 0.1);// set size of levellevel->setSize(40);// enable single line display optionlevel->setSingleIncrementDisplay(true);// assign value to levellevel->setValue(value);
水平仪能够通过旋转小部件 90 度来程度设置。
using namespace chai3d;// rotate level of 90 degrees anglelevel->rotateWidgetDeg(90);
表盘
表盘提供与水平仪相似的性能,但采纳圆形显示。
拨盘:(左)间断显示(右)单增量显示
using namespace chai3d;// create dial objectdial = new cDial();// add dial to front layer of cameracamera->m_frontLayer->addChild(dial);// set range of values displayed by dialdial->setRange(-0.1, 0.1);// set size of dialdial->setSize(40);// enable single line display optiondial->setSingleIncrementDisplay(true);// assign value to dialdial->setValue(value);
示波器
应用程序能够增加一个 cScope 小部件,以显示多达四个相似于数字示波器的不同信号。
using namespace chai3d;// create a background objectscope = new cScope();// add scope to back layer of cameracamera->m_frontLayer->addChild(scope);// assign a position (x,y) to panelscope->setLocalPos(100,60);// set range of signal values (min / max)scope->setRange(-0.1, 0.1);// enable signals for displayscope->setSignalEnabled(true, true, true, false);// assign a transparency level to scopescope->setTransparencyLevel(0.7);
初始化示波器后,能够应用以下命令继续更新信号值:
using namespace chai3d;// assign signal valuesscope->setSignalValues(value0, value1, value2, value3);
标签
标签是用于在应用程序中增加文本的小部件。对于每个标签,将调配一种字体。字体应始终在实例化标签之前创立,并且能够在多个标签之间共享。
using namespace chai3d;// create a fontcFont* font = NEW_CFONTCALIBRI20();// create a labelcLabel* label = new cLabel(font);// add label to front layer of cameracamera->m_frontLayer->addChild(label);// assign color to labellabel->m_fontColor.setBlack();// assign text to labellabel->setText("my message");// position widget on screenlabel->setLocalPos(100, 120);
字体
CHAI3D 反对应用位图字体,位图字体由蕴含字体中所有必须字母的纹理图集和形容该纹理图集上每个字母的地位和大小的文本数据文件组成。
所选字体在 CHAI3D 框架中编码,并能够应用以下代码进行实例化。编码字体的残缺列表能够在 src/resources 目录中找到。
using namespace chai3d;// create a font (Calibri Size 20)cFont* font1 = NEW_CFONTCALIBRI20();// create a font (Calibri Size 36)cFont* font2 = NEW_CFONTCALIBRI36();
字体也能够应用应用程序BMFont从AngelCode生成的字体文件加载。
using namespace chai3d;// create a fontcFont* font = new cFont();// load font from filefont->loadFromFile("myFont.fnt");
应用 BMFont 创立位图字体
步骤1
运行 BMFont 并关上选项->字体设置。
步骤2
1、从PC上已装置的字体列表中抉择所需的字体,或增加硬盘驱动器上的字体文件。
2、设置字体的像素大小并选中匹配字符高度。
3、查看 字体平滑 和 超级采样 如果您心愿字母平滑且打消锯齿。
步骤3
1、而后回到主工具窗口,您将看到所选字体中蕴含的所有字母。
2、突出显示您心愿蕴含在字体中的所有字母,通过关上/敞开每个字母或从右侧列表中切换字母的子局部来独自突出显示。
步骤4
1、接下来,关上选项->导出选项。
2、依据您抉择的字体,以及是否要向纹理图集增加任何前期成果,您可能须要增加一些字母填充以避免字母上出现意外的伪影。
3、设置纹理图集的宽度和高度。它须要足够大,以便将所有字母放入一个纹理上。要查看它是否适宜所选大小,请返回主窗口并按“V”或转到选项->可视化。
4、最好是保持应用地图集的 2 次幂维度。例如 2,4,8,16,32,64,128,256,512 等。5、查看32位深度以容许alpha通道。
6、选中文本文件格局,并查看 PNG 作为纹理格局。
步骤5
1、抉择选项->将位图字体另存为...2、将位图字体保留到 CHAI3D 资源文件夹。
3D建模学习工作室翻译整顿,转载请表明出处!