首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

使用 Bluemix 分析来自 Oculus Rift 的游戏数据-2

使用 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 数据库,查看您的信息是否已成功上传。

});



返回列表