three.js 3d三维网页代码加密的实现方法
http://www.jiamisoft.com/blog/17827-three-js-3dsanweiwangyejiami.html
https://www.html5tricks.com/tag/webgl webgl 精彩示例
three.js 3d三维网页代码加密的实现方法
随着网络速度的提升和计算机硬件的革新,使得网页的三雏实现成为现实。而WebGL库Three.js 3D引擎的出现更为三维网页的开发增添色彩。
一、Three.js三维网页概述与实现
Three.js是基于WebGL的一款开发框架,是调用底层OpenCL ES图形库的一个javascript接口,属于Htm15技术的一个分支oWebCL通过网页中的新型标签。
1、Three,js 3D引擎
在此作一简略介绍:
①首先是加载Three.js 3D引擎的库文件,即引入Three.js文件i,基础代码是:。
②创建场景,基础代码是:var scene=new THREE.Scene0。
③创建摄像机,例如:var camera=new THREE.Perspe-ctiveCamera(VIEVV二ANGLE,ASPECT,NEAR,FAR),当然这里还需要根据实际情况选择不同相机,并可以对相机作出设置。
④添加渲染器,例如:var renderer=new THREE.Web-GLRenderer( {antialias:true))’如果需要可以设置不同的渲染器,并可以根据情况进行设置。
⑤网格模型的构建与导入、材质的添加与灯光效果的添加,完成以上四步后,一个三维网页的骨架就已经搭建成功了,之后我们就可以在其中绘制构建网格模型、添加材质以及灯光等效果了。简单的网格模型可以直接使用代码绘制渲染,当然如果想要引入复杂的模型,比作使用建模工具制作的模型,就需要使用相应的函数进行加载,例如:new THREE.JSONLoader(),当然再添加上材质,并添加上灯光,效果会更好。
⑥最后还需要做的是渲染循环:renderer.render( scene,camera),以实现动画效果。
2、实现方式和流程
(1)三维建模
利用三维建模工具(3ds max或者maya或者blender等)制作三维模型、添加材质、灯光等特效。然后将模型保存成obj格式的文件,或者直接使用blender保存成js格式的文件。
(2)模型转换
对于obj格式的文件,Three.js就已经能够加载进网页之中了,这里我们使用的是JSON数据类型的文件。即将obj格式的文件转换成js格式的文件。格式装换过程:
先安装Python,在此使用的是Python的2.6.0版本。然后使用命令:D:\Python26\python d:\convert_obj_three.py_d:\model.obj—o d:\model.js生成的JSON数据类型的文件。
(3)代码开发
建议采用VIM编写代码,使用Chrome浏览器调试。为了能使Chrome能够更好的支持WebGL,我们需要对其作出简单配置,在Chrome桌面快捷方式上点击右键、选择属性,然后将-enable-webl;l-ignore-gpu-blacklist-all-ow-file-access-from-files粘贴到“目标”文本框里。
二、Three.js三维网页实现代码加密
Three.js 3D引擎是完全使用javaScript编写成的,因此基于Three.js 3D引擎的三维网页也继承Three.js 3D引擎的这一特点,使用javaScript编写而成。而目前如果对javaScript不做安全控制的化,代码完全暴露在网络中,因此我么需要对其代码做出简单加密,以降低其可读性,同时提高其安全性。
JavaScriptf弋码加密的本质是降低代码的可读性,从而提高解密、阅读上的难度。因为使用Three.js 3D引擎实现的三维网页,其主要代码是JavaScript,而且代码量很大,运行速度与性能也局限于硬件与网速,因此如果对代码做出过多的操作,极大程度上会降低代码的运行性能与速度,因此采用将文明定长字符串逐一加10变换为16进制的方式,之后对其进行去除缩进、空格、注释等进行简单压缩,然后简单使用加密即可。而不必要做出复杂的代码混淆,加密。
其中加解密文件’js.min.js代码如下:
①加密
$(document).ready(function0($(”#encode”).click(function()
{var s=$C’#txtl“).valO;var b=””;.
for(var i=O;i
var hexs=(ascx+lO)toString(16);
//al ert(hexs.leng;.h);
if(hexs.length==2) {hexs=”OO”+hexs;}
b+=hexs;}
②解密
rlocume.nt.getElementByIdCtxt2’).value=b;}); l);
function fun (str){var newb=””;for (var i=O;i<str.length;
j+=4)∥以每四个长度来分隔
{var newchar=su-substr(1,4);
newb+=String.fr omCharCode
((parselnt (newchar,1 6)-10).
toString(10));}
retum nc.wb;}
小知识之三维模型
三维模型是物体的多边形表示,通常用计算机或者其它视频设备进行显示。显示的物体是可以是现实世界的实体,也可以是虚构的物体。任何物理自然界存在的东西都可以用三维模型表示。
three.js 3d三维网页代码加密的实现方法的更多相关文章
- [ActionScript 3.0] 对代码加密的有效方法
package { import flash.display.Loader; import flash.display.Sprite; import flash.net.LocalConnection ...
- iOS代码加密常用加密方式
iOS代码加密常用加密方式 iOS代码加密常用加密方式,常见的iOS代码加密常用加密方式算法包括MD5加密.AES加密.BASE64加密,三大算法iOS代码加密是如何进行加密的,且看下文 MD5 iO ...
- JS获取整个HTML网页代码 - Android 集美软件园 - 博客频道 - CSDN.NET
JS获取整个HTML网页代码 - Android 集美软件园 - 博客频道 - CSDN.NET JS获取整个HTML网页代码 分类: Android提高 2012-01-12 23:27 1974人 ...
- three.js 3D 动画场景
Three.js 是一款运行在浏览器中的 3D 引擎,你可以用它创建各种三维场景,包括了摄影机.光影.材质等各种对象.使用它它能让 WebGL 变得更加简单. 下面用Three.js渲染一个物体360 ...
- 【Web技术】399- 浅谈前端代码加密
作者简介:于航,PayPal Senior Software Engineer,在 PayPal 上海负责 Global GRT 平台相关的技术研发工作.曾任职于阿里巴巴.Tapatalk 等企业.f ...
- js实现打开网页自动弹出添加QQ好友邀请窗口
我们有时进一些网面或专题页面会自动弹出一个加为好友的对话框了,在研究了很久之后发现可以直接使用js来实现,下面我们一起来看js实现打开网页自动弹出添加QQ好友邀请窗口的方法. 第一步.JS脚本 这个是 ...
- JS实现Web网页打印功能(IE)
问题描述: JS实现Web网页打印功能 问题解决: 这里主要使用WebBrowser控件的ExeWB在IE中打印功能的实现 WebBrowser介绍: WebBrows ...
- js压缩、混淆和加密
最近看到有些论坛在讨论js压缩.混淆和加密的问题,特意找了些资料看了下,现在总结一下: 1.关于三者的定义与区别 压缩:删除 Javascript 代码中所有注释.跳格符号.换行符号及无用的空格,从而 ...
- js文字向上滚动代码
js文字向上滚动代码 <style>.pczt_pingfen_jhxs_news1{ width:397px; background:#edfafd; padding-top:2px; ...
随机推荐
- linux下vi或vim操作Found a swap file by the name的原因及解决方法
在linux下用vi或vim打开Test.java文件时 [root@localhost tmp]# vi Test.java出现了如下信息: E325: ATTENTION Found a s ...
- VS2013生成XP独立运行程序
一.首先选择静态库 如果设置不对会出现如下错误 fatal error C1189: #error : Building MFC application with /MD[d] (CRT dll v ...
- 管理菜单 结贴回复 来自 202.112.36.253 的回复: TTL 传输中过期
发表于 2010-08-26 18:29:14 楼主 其实标题是我执行如下命令时的输出:C:\Users\ChenWeiguang>ping 218.198.81.190 正在 Ping 218 ...
- Ubuntu下开启Mysql远程访问的方法
首先想说,JetProfiler对分析项目中MySQL问题以及优化,是个非常好的工具.但是看网上文章,中文介绍真的不多.是因为国内现在都不用MySQL了吗? 因为公司JetProfiler是共用的,安 ...
- 前端页面展示MySQL数据并实现前后端互动
前端页面使用H-ui框架 后端使用flask框架 数据库使用mysql 连接数据库通过pymysql实现 前端代码如下 <html lang="en"> < ...
- Ubuntu系统安装nginx
1.首先查看linux系统 cat /proc/version Linux version 4.9.59-v7+ (dc4@dc4-XPS13-9333) (gcc version 4.9.3 (cr ...
- 10.31vue(一)
2018-10-31 19:58:45 耳机一个响一个不响,,,该换耳机了 又换个新老师预计讲五天的vue后面的路飞项目用! 这是vue参考连接: https://www.cnblogs.com/ma ...
- 使用nginx运行thinkphp的nginx配置
location / { index index.php; #如果文件不存在则尝试TP解析 if (!-e $request_filename) { rewrite ^(.*)$ /index.php ...
- vue的单向数据流
父级向子组件传递的值, 子组件不能直接修改这个穿过来的值,否则会曝出警告,这就是单项数据流. 如果是引用值,传递的是引用值得地址,而不是值本身,也就是说,子组件里修改这个传过来的值,通常的做法是放到它 ...
- php中,echo,print,var_dump的三个区别
1.echo语句 echo - 能够输出一个以上的字符串 <?php echo "<h2>www.dc3688.com</h2>"; ...