http://www.jiamisoft.com/blog/17827-three-js-3dsanweiwangyejiami.html

https://www.html5tricks.com/tag/webgl  webgl 精彩示例

three.js 3d三维网页代码加密的实现方法

作者:admin 发布于:2015-09-29 16:18    1,493 浏览数
 

随着网络速度的提升和计算机硬件的革新,使得网页的三雏实现成为现实。而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三维网页代码加密的实现方法的更多相关文章

  1. [ActionScript 3.0] 对代码加密的有效方法

    package { import flash.display.Loader; import flash.display.Sprite; import flash.net.LocalConnection ...

  2. iOS代码加密常用加密方式

    iOS代码加密常用加密方式 iOS代码加密常用加密方式,常见的iOS代码加密常用加密方式算法包括MD5加密.AES加密.BASE64加密,三大算法iOS代码加密是如何进行加密的,且看下文 MD5 iO ...

  3. JS获取整个HTML网页代码 - Android 集美软件园 - 博客频道 - CSDN.NET

    JS获取整个HTML网页代码 - Android 集美软件园 - 博客频道 - CSDN.NET JS获取整个HTML网页代码 分类: Android提高 2012-01-12 23:27 1974人 ...

  4. three.js 3D 动画场景

    Three.js 是一款运行在浏览器中的 3D 引擎,你可以用它创建各种三维场景,包括了摄影机.光影.材质等各种对象.使用它它能让 WebGL 变得更加简单. 下面用Three.js渲染一个物体360 ...

  5. 【Web技术】399- 浅谈前端代码加密

    作者简介:于航,PayPal Senior Software Engineer,在 PayPal 上海负责 Global GRT 平台相关的技术研发工作.曾任职于阿里巴巴.Tapatalk 等企业.f ...

  6. js实现打开网页自动弹出添加QQ好友邀请窗口

    我们有时进一些网面或专题页面会自动弹出一个加为好友的对话框了,在研究了很久之后发现可以直接使用js来实现,下面我们一起来看js实现打开网页自动弹出添加QQ好友邀请窗口的方法. 第一步.JS脚本 这个是 ...

  7. JS实现Web网页打印功能(IE)

    问题描述:     JS实现Web网页打印功能 问题解决:     这里主要使用WebBrowser控件的ExeWB在IE中打印功能的实现 WebBrowser介绍:         WebBrows ...

  8. js压缩、混淆和加密

    最近看到有些论坛在讨论js压缩.混淆和加密的问题,特意找了些资料看了下,现在总结一下: 1.关于三者的定义与区别 压缩:删除 Javascript 代码中所有注释.跳格符号.换行符号及无用的空格,从而 ...

  9. js文字向上滚动代码

    js文字向上滚动代码 <style>.pczt_pingfen_jhxs_news1{ width:397px;  background:#edfafd; padding-top:2px; ...

随机推荐

  1. 局域网ARP攻击防护

    通过借助一些安全软件来实现局域网ARP检测及防御功能. A.电脑管家 电脑管家--工具箱--下载ARP防火墙模块 不支持window2003 B.服务器安全狗 Windows版下载:http://fr ...

  2. Docker中使用redis

    项目中频繁使用Redis,为了不用每次打开Redis目录去启动Redis想到了Docker可以作为Redis的容器 直接下载使用就行 把Docker使用Redis的过程分享下:   1.     拉取 ...

  3. docker 应用-2(Dockerfile 编写以及镜像保存提交)

    我们可以从docker hub上pull别人的镜像,也可以将容器进行修改,然后commit镜像,并把镜像push到docker hub上被被人使用.但是,直接pull或者push镜像的方式太过笨重,尤 ...

  4. Android学习:Notification状态栏通知

    Notification是显示在手机状态栏的通知,它代表一种具有全局效果的通知,程序一般通过NotificationManager服务来发送Notification.在小米手机上,手指在屏幕顶端向下划 ...

  5. ubuntu中安装blogPost

    1.实验环境 Ubuntu16.04x86 2.安装blogPost步骤 2.1 安装方式比较简单,打开ubuntu软件中心 2.2 搜索DB Browser for SQLite,点击安装即可 上图 ...

  6. spring和jdbctemplate

    1.spring与jdbc整合应用 a.增删改 -获取connection -获取statement -设置sql中?参数 -执行sql操作 -释放connection b.查询 -获取connect ...

  7. ubantu中怎样安装VMware Tools

    点击虚拟机选择安装VMware tools tar zxvf VMwareTools-9.6.0-1294478.tar.gz -C /root/(安装到的目录)cd /root/cd vmware- ...

  8. Linux基础:用tcpdump抓包(转)

    https://segmentfault.com/a/1190000012593192 https://segmentfault.com/a/1190000009691705

  9. centos7磁盘在线扩容

    1.添加新磁盘 2.fdisk -l查看磁盘被识别的名称 3.如果输入fdisk -l命令没有找到新的磁盘,按下面步骤操作 1)进入到cd /sys/class/scsi_host/ 2)echo & ...

  10. 添加一个Activity

    #Android中增加一个Activity 1. 在AndroidManifest.xml中增加: <activity android:name="com.example.NewAct ...