2013-01-02 44 views
6

我学习了一些webGL,主要使用three.js。 我加载.obj文件,我用3D绘制它们。是否可以隐藏/保护webGL中使用的数据?

我已经把我的项目在线下是这样的:www.mydomain.com

我不介意人们看着通过自己的浏览器我的源代码,但我表示.OBJ文件是从别人谁不想让他们离开。

我是一个有关这个总新手。

由于我的源代码适用于所有人,我猜测.obj文件也适用于所有人。那么是否有可能隐藏或保护它们,以便没有人可以下载它们?

+3

不,因为当你得到这些文件来绘制它们时,它们已经被下载到客户端机器上了...... – 11684

+1

你唯一的机会可能是混淆等等。 – 11684

回答

7

我敢肯定你不能保护任何文件,如果你想访问和使用它们在Javascript/WebGL。他们需要在某些时候被解析为可用的格式,以便browser/javascript能够显示它们。你有两种选择:

1)混淆。我不认为这是非常好的选择,因为最终人们总是可以使用Firebug和其他工具来访问您的文件的某些有用的表示。您可以通过加密或加扰数据服务器端,并重新构建Javascript中的内容来简化操作。或者只是使用非常规的方式来加载和表示文件。

您还可以在着色器代码中进行一些解码/解密,这将更难以窃取。但是这可能仅适用于纹理。

2)使文件不太有用。对于某人重复使用您的OBJ文件,他们可能想要将模型导入到他们选择的软件中并执行某些操作。你无法阻止这种情况发生,但是你可以去除额外信息的文件,使文件更容易处理。这将使文件不太适合任何潜在的盗贼。

我这样做的原因完全不同,但我主要使用WebGL涉及将模型从Sketchup导出到Collada,并在WebGL中显示它们。我的导出代码做了一些事情,这些副作用使导出的模型很难处理。这包括使所有组件实例独特(去实例化?),将所有组件和组分解为纯几何,对所有面进行三角化,删除隐藏的几何等。

将PITA带回SketchUp进行编辑,原始文件...特别是因为我使用的模型,性质很大程度上取决于组件和组实例。但是,仍然没有什么能够阻止某人偷窃几何图形“原样”。

2

如果某人可下载到浏览器,那么它在用户的计算机上。

您可以使读取文件更加困难,但它只会减慢抓取.obj数据。如果有人想这样做,那么他/她最终可以做到。解密密钥必须始终在客户端计算机上。所以你只能放慢这个过程。所以这个问题变成“你想让你的.obj阅读代码有多困难和多复杂,是否值得付出努力?”只需在文件的开头添加一个额外的字节就足以使文件不会像建模软件中那样打开。

我建议你教育你的人如何运作互联网,简单地说它是不可能的或值得尝试去做,并节省自己想出如何使数据阅读更困难的自制软件实现。

2

查看其他答案,但这不是WebGL独有的。任何语言的任何程序都有此问题。一旦数据在用户的计算机上,电话等人就可以获得数据。例子:

  1. reading an iOS app's data
  2. reading a native PC app's data

在另一方面,你可以按照上面提到的技术。使用你自己的格式。按摩数据,因此最适合渲染,这通常会导致编辑效果不佳。

当然,你也可以让你的文件需要有人登录你的网站来阅读他们的第一个地方类似于他们的方式Gmail,Facebook,谷歌文档等需要你登录。这不会阻止他们在注册后获取文件,但是。 You can also setup your server so only your app can download the files。同样,这不会阻止用户在您的应用下载文件后(或者他们通过浏览器扩展插入了JavaScript)获取文件,但它可以防止您的带宽从其他直接链接到您的数据的网站中被盗取。

相关问题