这次使用CopperCube 制作2个球体,然后可以通过 FireBeetle 控制这两个球体的颜色。
1. 创建一个新的场景,删除场景中自带的立方体,然后创建一个球体(Sphere)
2. 新建的球体是自带贴图的,这个贴图来自前面立方
| | - 关闭
- [url=]上传图片[/url]
- [url=]相册图片[/url]
- [url=]网络图片[/url]
| 3. 选中球体,在Textures中选择第一个空贴图,然后在属性的 Materials 中点击更换贴图
4. 之后球体上面的贴图就为空了
5. 为了便于观察,我们给图赋予一个颜色,选中物体后右键,在弹出菜单中 选择 “Modify Selection”->”Setvertex Colors”。 在弹出的调色板上选择你喜欢的颜色
6. 球体变成了红色,选中球体后再使用右键调出菜单进行: clone
7. 现在场景中有2个红色球体了,为了便于观察,改成动态光照,在Materials中选择 Dynamic
8. 在场景中创景一个光源
9. 让光源动起来,具体方法在上次的文章中介绍过
10. 之后保存场景为FBTest.ccb文件
11. 编写一个响应键盘的JavaScripe文档,当收到不同的按键时,改变球体的颜色。文件命名为 FBTest.js 放到和上面 FBTest.ccb 同一个目录下
- // register key events
- ccbRegisterKeyDownEvent("keyPressedDown");
-
- function keyPressedDown(keyCode)
- {
- //z
- if (keyCode == 90)
-
- {
- var sN = ccbGetSceneNodeFromName("sphereMesh1");
-
- print(ccbGetSceneNodeMeshBufferCount(sN) );
-
- for (var x=0; x<ccbGetMeshBufferVertexCount(sN,0); ++x) {
-
- ccbSetMeshBufferVertexColor(sN, 0, x, 0x00ff0000);
-
- }
-
- }
-
- //x
- if (keyCode == 88)
-
- {
- var sN = ccbGetSceneNodeFromName("sphereMesh1");
-
- print(ccbGetSceneNodeMeshBufferCount(sN) );
-
- for (var x=0; x<ccbGetMeshBufferVertexCount(sN,0); ++x) {
-
- ccbSetMeshBufferVertexColor(sN, 0, x, 0x0000FF00);
-
- }
-
-
- }
-
-
- //c
- if (keyCode == 67)
-
- {
- var sN = ccbGetSceneNodeFromName("sphereMesh2");
-
- print(ccbGetSceneNodeMeshBufferCount(sN) );
-
- for (var x=0; x<ccbGetMeshBufferVertexCount(sN,0); ++x) {
-
- ccbSetMeshBufferVertexColor(sN, 0, x, 0x0000FF00);
-
- }
-
- }
-
-
- //v
- if (keyCode == 86)
-
- {
- var sN = ccbGetSceneNodeFromName("sphereMesh2");
-
- print(ccbGetSceneNodeMeshBufferCount(sN) );
-
- for (var x=0; x<ccbGetMeshBufferVertexCount(sN,0); ++x) {
-
- ccbSetMeshBufferVertexColor(sN, 0, x, 0x000000FF);
-
- }
-
-
- }
-
- print(keyCode );
-
- }
复制代码
12. 编写FireBeetle代码,我们需要使用 FireBeetle 的蓝牙功能,将其模拟为一个蓝牙键盘,当有不同按键按下后,发送按键信息。这样当CopperCube生成的 EXE 收到后,会改变颜色。
- /**
- 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
-
- */
- #include <BleKeyboard.h>
- #define PINA 12
- #define PINB 4
- #define PINC 16
- #define PIND 17
-
- BleKeyboard bleKeyboard;
-
- void setup() {
- Serial.begin(115200);
-
- Serial.println("Starting BLE work!");
-
- pinMode(PINA, INPUT_PULLUP);
-
- pinMode(PINB, INPUT_PULLUP);
-
- pinMode(PINC, INPUT_PULLUP);
-
- pinMode(PIND, INPUT_PULLUP);
-
- bleKeyboard.begin();
- }
-
- void loop() {
- if (bleKeyboard.isConnected()) {
-
- if (digitalRead(PINA) == LOW) {
-
- Serial.println("Sending 'z'");
-
- bleKeyboard.print("z");
-
- delay(200);
- }
- if (digitalRead(PINB) == LOW) {
-
- Serial.println("Sending 'x'");
-
- bleKeyboard.print("x");
-
- delay(200);
- }
-
- if (digitalRead(PINC) == LOW) {
-
- Serial.println("Sending 'c'");
-
- bleKeyboard.print("c");
-
- delay(200);
- }
- if (digitalRead(PIND) == LOW) {
-
- Serial.println("Sending 'v'");
-
- bleKeyboard.print("v");
-
- delay(200);
- }
- }
- }
复制代码
编译之后就能看到最终的结果了。
|