使用 Bluemix 分析来自 Oculus Rift 的游戏数据-2
- UID
- 1066743
|
使用 Bluemix 分析来自 Oculus Rift 的游戏数据-2
第 3 步. 准备 DBaaS (Cloudant)首先,创建 Cloudant 数据库。首先:
- 打开 Bluemix 仪表板,单击您的应用程序,然后单击 Cloudant 服务。这将打开一个新页面,其中显示了该服务的信息和如何开始操作。
- 单击 LAUNCH 访问该服务。请确保您位于 Databases 部分中(标为橙色)。
- 这一部分显示了您的所有数据库。我们想要创建一个新数据库,以便在应用程序中使用它,所以我们应该单击 Add New Database。
- 在弹出窗口的 Name of database 中,键入 users 来创建一个名为 users 的数据库。
- 接下来,创建一个名为 riftbase 的数据库。执行同样的步骤:单击 Add New Database,在提示时键入 riftbase。
第 4 步. 理解并配置应用程序我们仍然需要安装该插件。但是首先,在进入应用程序本身之前,应对最重要的代码节有所了解。
此代码位于 app.js 文件中:
1
| var cloudantServiceName = 'cloudant';
|
这是该程序将在 Bluemix 中查找 Cloudant 服务的地方。如果执行了前面的步骤,并创建了一个名为 cloudant 的服务,则不需要修改此信息。但是,如果创建了一个具有不同名称的服务,只需要将该代码更改为您所选择的名称即可。同样地,您应该在 Cloudant 中创建了两个数据库:user 和 riftbase。这些数据库将在两部分代码中调用:
1
| var db = nano.db.use('riftbase');
|
和
1
| var db = nano.db.use('users');
|
如果为您的数据库使用了不同的名称,则应修改此代码。
将数据发送到 Cloudant此代码(位于 app.js 中)创建一个 post 处理函数,所以它可以发送将要存储在我们的 Cloudant 数据库中的信息:
1
2
3
4
5
6
7
8
9
| app.post('/endpoint', function(req, res){
res.send(req.body);
db.insert({position:req.body},function(err, body, header) {
if (err) {
res.send("Error creating file");
return;
}
});
});
|
这个 post 请求由一个名为 myTimer 的函数每秒触发一次(可以在 oculus.ejs 代码中找到 myTimer,该代码是位于 views 文件夹中的 raw_data.html 代码的修改版本):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| function myTimer() {
if(state.hmd.present){
var data = {};
data.x = state.hmd.rotation[0].toFixed(2);
data.y = state.hmd.rotation[1].toFixed(2);
data.z = state.hmd.rotation[2].toFixed(2);
data.w = state.hmd.rotation[3].toFixed(2);
data.seconds = (endTime - startTime)/1000;
data.seconds = (data.seconds).toFixed(0);
$.post("/endpoint", data, function(response){
console.log(data);
});
}
}
|
这个 users 页面的代码位于 app.js 中。它将一个 Name 和 Age 发送到 Cloudant 上的 users 数据库:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| app.post('/insert',function(req,res){
var db = nano.db.use('users');
var name = req.body.name
var age = req.body.age
db.insert({name:name,age:age},function(err,body,header){
if(err){
console.log(err);
return res.status(500).send(err.message);
}
res.send("Contact was created successfully");
console.log("success");
});第 5 步. 安装 vr.js 插件vr.js 插件使得 Oculus Rift 可以使用浏览器(Chrome 或 Firefox)工作。需要 安装该插件 才能打开您应用程序的主页,但没有它也能打开 users 页面。(主页和 users 页面将在以下步骤中介绍。)
这个 Oculus Rift 应用程序中使用的代码是对 GitHub 上的代码稍作修改的版本。
现在,在 app.js 文件中,我们可以编写一个 get 方法来呈现 oculus 页面,该页面使用了 vr.js 插件:
1
2
3
| app.get('/', function (req, res){
res.render('oculus');
});
|
第 6 步. 运行该应用程序该应用程序有两个页面:主页和 users 页面。
主页在打开应用程序的主页时,会跳转到一个显示从连接到计算机的 Oculus Rift 捕捉的数据的网页。如果您的 Rift 已经连接,那么该页面应类似于下图(请注意,这个页面每秒将四元位置上传到 Cloudant 中的 riftbase 数据库):
oculus 使用四元系统,该系统是此页面中加粗显示的最后一个四元矢量。四元系统用于编码 3D 坐标系统中的任何旋转。
可存储来自此页面的任何值。在我们的应用程序中,仅存储了最后 4 个元素(四元值)。可以再次查看 myTimer 函数,了解如何从头戴耳机中检索这些值,并通过 post 方法发送它们。
Users 页面如果没有 Rift,或者某处出错而且您想确保应用程序在正常工作,那么可以将 “/users” 添加到 URL 末尾处来访问 users 页面(例如 http://bluemix.net/users)。此页面只是将数据发送到 Cloudant 的一个例子,不需要使用 Rift。填充这些方框并单击 Upload to Cloudant。随后,检查您的 Cloudant 数据库,查看您的信息是否已成功上传。
});
|
|
|
|
|
|
|