32543浏览
查看: 32543|回复: 0

[ESP8266/ESP32] CopperCube 配合 FireBeetle 改变球体颜色

[复制链接]
这次使用CopperCube 制作2个球体,然后可以通过 FireBeetle 控制这两个球体的颜色。
1.     创建一个新的场景,删除场景中自带的立方体,然后创建一个球体(Sphere)
CopperCube 配合 FireBeetle 改变球体颜色图1

2.     新建的球体是自带贴图的,这个贴图来自前面立方
CopperCube 配合 FireBeetle 改变球体颜色图2

  
  • 关闭
  • [url=]上传图片[/url]
  • [url=]相册图片[/url]
  • [url=]网络图片[/url]

3.     选中球体,在Textures中选择第一个空贴图,然后在属性的 Materials 中点击更换贴图
CopperCube 配合 FireBeetle 改变球体颜色图3

4.     之后球体上面的贴图就为空了

CopperCube 配合 FireBeetle 改变球体颜色图4
5.     为了便于观察,我们给图赋予一个颜色,选中物体后右键,在弹出菜单中 选择 “Modify Selection”->”Setvertex Colors”。 在弹出的调色板上选择你喜欢的颜色
CopperCube 配合 FireBeetle 改变球体颜色图5

6.     球体变成了红色,选中球体后再使用右键调出菜单进行: clone
CopperCube 配合 FireBeetle 改变球体颜色图6

7.     现在场景中有2个红色球体了,为了便于观察,改成动态光照,在Materials中选择 Dynamic
CopperCube 配合 FireBeetle 改变球体颜色图7

8.     在场景中创景一个光源

CopperCube 配合 FireBeetle 改变球体颜色图8
9.     让光源动起来,具体方法在上次的文章中介绍过
CopperCube 配合 FireBeetle 改变球体颜色图9

10.  之后保存场景为FBTest.ccb文件
CopperCube 配合 FireBeetle 改变球体颜色图10

11.  编写一个响应键盘的JavaScripe文档,当收到不同的按键时,改变球体的颜色。文件命名为 FBTest.js 放到和上面 FBTest.ccb 同一个目录下
  1. // register key events
  2. ccbRegisterKeyDownEvent("keyPressedDown");
  3. function keyPressedDown(keyCode)
  4. {
  5.                //z
  6.                if (keyCode == 90)
  7.                {
  8.                               var sN = ccbGetSceneNodeFromName("sphereMesh1");
  9.                               print(ccbGetSceneNodeMeshBufferCount(sN) );
  10.                               for (var x=0; x<ccbGetMeshBufferVertexCount(sN,0); ++x) {
  11.                               ccbSetMeshBufferVertexColor(sN, 0, x, 0x00ff0000);
  12.                               }
  13.                }
  14.                //x
  15.                if (keyCode == 88)
  16.                {
  17.                               var sN = ccbGetSceneNodeFromName("sphereMesh1");
  18.                               print(ccbGetSceneNodeMeshBufferCount(sN) );
  19.                               for (var x=0; x<ccbGetMeshBufferVertexCount(sN,0); ++x) {
  20.                               ccbSetMeshBufferVertexColor(sN, 0, x, 0x0000FF00);
  21.                               }
  22.                }
  23.                //c
  24.                if (keyCode == 67)
  25.                {
  26.                               var sN = ccbGetSceneNodeFromName("sphereMesh2");
  27.                               print(ccbGetSceneNodeMeshBufferCount(sN) );
  28.                               for (var x=0; x<ccbGetMeshBufferVertexCount(sN,0); ++x) {
  29.                               ccbSetMeshBufferVertexColor(sN, 0, x, 0x0000FF00);
  30.                               }
  31.                }
  32.                //v
  33.                if (keyCode == 86)
  34.                {
  35.                               var sN = ccbGetSceneNodeFromName("sphereMesh2");
  36.                               print(ccbGetSceneNodeMeshBufferCount(sN) );
  37.                               for (var x=0; x<ccbGetMeshBufferVertexCount(sN,0); ++x) {
  38.                               ccbSetMeshBufferVertexColor(sN, 0, x, 0x000000FF);
  39.                               }
  40.                }
  41.               
  42.                print(keyCode );
  43. }
复制代码


12.  编写FireBeetle代码,我们需要使用 FireBeetle 的蓝牙功能,将其模拟为一个蓝牙键盘,当有不同按键按下后,发送按键信息。这样当CopperCube生成的 EXE 收到后,会改变颜色。
  1. /**
  2.    This example turns the ESP32 into a Bluetooth LE keyboard that writes the words, presses Enter, presses a media key and then Ctrl+Alt+Delete
  3. */
  4. #include <BleKeyboard.h>
  5. #define PINA 12
  6. #define PINB  4
  7. #define PINC 16
  8. #define PIND 17
  9. BleKeyboard bleKeyboard;
  10. void setup() {
  11.   Serial.begin(115200);
  12.   Serial.println("Starting BLE work!");
  13.   pinMode(PINA, INPUT_PULLUP);
  14.   pinMode(PINB, INPUT_PULLUP);
  15.   pinMode(PINC, INPUT_PULLUP);
  16.   pinMode(PIND, INPUT_PULLUP);
  17.   bleKeyboard.begin();
  18. }
  19. void loop() {
  20.   if (bleKeyboard.isConnected()) {
  21.     if (digitalRead(PINA) == LOW) {
  22.       Serial.println("Sending 'z'");
  23.       bleKeyboard.print("z");
  24.       delay(200);
  25.     }
  26.     if (digitalRead(PINB) == LOW) {
  27.       Serial.println("Sending 'x'");
  28.       bleKeyboard.print("x");
  29.       delay(200);
  30.     }
  31.     if (digitalRead(PINC) == LOW) {
  32.       Serial.println("Sending 'c'");
  33.       bleKeyboard.print("c");
  34.       delay(200);
  35.     }
  36.     if (digitalRead(PIND) == LOW) {
  37.       Serial.println("Sending 'v'");
  38.       bleKeyboard.print("v");
  39.       delay(200);
  40.     }
  41.   }
  42. }
复制代码


编译之后就能看到最终的结果了。



您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail