我主要使用three.js学习了一些webGL。 我加载.obj文件,然后用3D绘制它们。
我已将我的项目放在网上,例如:www.mydomain.com
我不介意人们通过他们的浏览器查看我的源代码,但我展示的.obj文件来自不想放弃它们的人。
我是一个关于此的新手。
由于我的源代码可供所有人使用,我猜测.obj文件也可供所有人使用。那么有可能隐藏或保护它们以便没有人可以下载它们吗?
答案 0 :(得分:7)
如果您想在Javascript / WebGL中访问和使用它们,我很确定您无法保护任何文件。它们需要在某些时候被解析成可用的格式,以便浏览器/ javascript能够显示它们。您有两种选择:
1)混淆。我不认为这是一个非常好的选择,因为最终有人可以使用Firebug和其他工具来访问文件的某些有用的表示。您可以通过加密或加扰数据服务器端并在Javascript中重建内容来使其变得容易一些。或者只是使用非常规方式来加载和表示文件。
您还可以在着色器代码中进行一些解码/解密,这将更难以窃取。但这可能只适用于纹理。
2)使文件不那么有用。对于某人重用您的OBJ文件,他们可能希望将模型导入他们选择的软件并执行某些操作。您无法阻止这种情况,但您可以删除使文件更易于使用的额外信息文件。这将使文件不太适合任何潜在的小偷。
我出于完全不同的原因这样做,但我主要使用WebGL涉及将模型从Sketchup导出到Collada,并在WebGL中显示它们。我的导出代码做了一些事情,作为副作用使导出的模型很难处理。这包括使所有组件实例都是唯一的(去实例?),将所有组件和组展开为普通几何体,对所有面进行三角测量,删除隐藏的几何体等。
将PITA带回到Sketchup进行编辑而不使用原始文件...特别是因为我使用的模型本质上很大程度上取决于组件和组实例。但是,没有什么能阻止某人“按原样”窃取几何体。
答案 1 :(得分:2)
如果有人可以下载到浏览器,那么它就在用户的计算机上。
您可以使阅读文件更加困难,但它只会减慢抓取.obj数据的速度。如果有人想这样做,那么他/她最终可以做到。解密密钥必须始终在客户端计算机上。所以你只能减慢这个过程。所以问题就变成了“你想要制作.obj阅读代码的难度和复杂程度,是否值得付出努力?”只需在文件开头添加一个额外的字节就足以使文件不像建模软件那样打开。
我建议你教育你的人互联网是如何工作的,只是说不可能或不值得尝试去做,并且自己节省了自制实现如何使数据阅读变得更加困难。
答案 2 :(得分:2)
请参阅其他答案,但这并非WebGL独有。任何语言的任何程序都有这个问题。一旦数据在用户的计算机,电话等上,人们就可以获得数据。例子:
另一方面,您可以遵循上述技术。使用您自己的格式。按下数据,这样最适合渲染,这通常会使编辑变得不好。
此外,你当然可以让你的文件要求有人登录你的网站,首先阅读它们类似于他们的方式gmail,facebook,google docs等要求你登录。这不会阻止他们在注册后获取文件,但是。 You can also setup your server so only your app can download the files。同样,这不会阻止用户在您的应用程序下载文件后(或者他们通过浏览器扩展程序注入JavaScript)获取文件,但它会阻止您的带宽从直接链接到您的数据的其他网站中被盗。