婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 基于HTML5的WebGL經典3D虛擬機房漫游動畫

基于HTML5的WebGL經典3D虛擬機房漫游動畫

熱門標簽:江蘇智能電銷機器人哪家好 當涂高德地圖標注 成都智能外呼系統平臺 鎮江智能外呼系統有效果嗎 云南大理400電話申請官方 南寧點撥外呼系統哪家公司做的好 四川點撥外呼系統 黃島區地圖標注 電銷機器人電話用什么卡

第一人稱在 3D 中的用法要參考第一人稱在射擊游戲中的使用,第一人稱射擊游戲(FPS)是以第一人稱視角為中心圍繞槍和其他武器為基礎的視頻游戲類型;也就是說,玩家通過主角的眼睛來體驗動作。自從流派開始以來,先進的3D和偽 3D圖形已經對硬件發展提出了挑戰,而多人游戲已經不可或缺。

Doom的截圖,這個流派的突破游戲之一,展示了第一人稱射擊游戲的典型視角

現在博物館或者公司也經常使用到 3D 動畫做宣傳片等等,3D動畫演繹最大的優勢,便是在于內容與形式上給人的真實感受。它比平面作品更直觀,比 2D 動畫更真實,所以更能給觀賞者以置身于廣告環境當中的感受,大大增強廣告的說服力。3D 技術的發展甚至挑戰受眾的分辨能力,使受眾的判斷游離于與虛擬和現實之間。
而且 3D特效的應用為創意提供了更加廣闊的思維空間,并成為創意執行的可靠保證,并豐富了創意的形式和風格手段。根據廣告主題的表現訴求,可以營造出夢幻般的神奇氛圍來刺激打動受眾,從而起到與受眾溝通的目的。
3D動畫宣傳片將 3D動畫、特效鏡頭、企業視頻、照片、未來前景等內容通過后期合成、配音、解說形成一部直觀、生動、喜聞樂見的高品位的企業廣告宣傳片,讓社會不同層面的人士對企業產生正面的、積極的、良好的印象,從而建立對企業的好感與信任,并信賴該企業的產品或服務。

現在 3D 發展地如此迅速也要感謝人類對于“現實”的追求,所以學好用好 3D 是未來成功必不可少的一部分。

本文例子的思路是進入一個機房參觀,打開門的動作是再生動不過了, 再加上適當地轉彎,基本上完全模擬了人在機房中參觀的效果。還有一個好處就是,如果要演示給領導看而又不用操作,這種炫酷的效果領導一定會很滿意!

http://www.hightopo.com/demo/room-walkthrough/index.html

界面上的“reset”和“start”兩個按鈕是直接加在 body 體中的 button,并在這兩個按鈕上添加點擊事件:

<div></div><div></div>

整個場景由 HT 封裝的 3D 組件搭建形成的,構造這么大的場景是需要一定量的代碼的,為了簡化,我把場景單獨拿出來,并用 HT 封裝的 ht.JSONSerializer 類將場景序列化為 json,代碼中只引入了生成后的 json 文件,為了讓大家更明確,我這邊做個示例,假設已經搭建好 3D 場景了:

dm = new ht.DataModel();g3d = new ht.graph3d.Graph3dView(dm);//.......構建好場景dm.serialize();//可以填入number參數,作為空格縮進值

既然我們已經搭建好環境,轉成了 json 文件,代碼中不好控制,這種情況下我們會將 DataModel 數據模型再反序列化,這個函數的功能就是將 json 格式轉成對象,并將反序列化的對象傳入到 DataModel 數據模型中,詳情請參考HT for Web 序列化手冊:

 var g3d = window.g3d = new ht.graph3d.Graph3dView(),    
dataModel = g3d.dm(),    
view = g3d.getView(),    
path = null;g3d.setMovableFunc(function(data) {    return false;});
g3d.setVisibleFunc(function(data) {    
if (data.getName() === "path") {       
 return false;    
}    
return true;});
g3d.setEye([523, 5600, 8165]);g3d.setFar(60000);dataModel.deserialize(json);

我們目前需要操作場景中的“門”、以及我們將要走的路線“path”,遍歷 DataModel 數據模型,獲取這兩個數據:

for (var i = 0; i < dataModel.size(); i++) {    
var data = dataModel.getDatas().get(i);   
 if (data.getName() === "門") 
{//json中設置的名稱       
window.door = data;    
}    
if (data.getName() === "path") 
{        
path = data;    
}    
if (window.door && path) 
{//獲取到door 和 path 的data之后就跳出循環        
break;   
 }}

這個例子中簡單來說就只有四個動作,“重置”回到原點、“開始動作”、“向前移動”,“停止”。點擊“開始”按鈕,在“開始動作”中我們只做了一個動作,“開門”動作,動作結束之后調用“forward”函數向前移動:

function startAnim() {
   
if (window.isAnimationRunning) 
{        
return;   
 }    
reset();    
window.isAnimationRunning = true;//動畫是否正在進行    ht.Default.startAnim({       
 frames: 30, // 動畫幀數,默認采用`ht.Default.animFrames`。        
interval: 20, // 動畫幀間隔,默認采用`ht.Default.animInterval`。           
finishFunc: function() {// 動畫結束后調用的函數。            
forward();        
},         
action: function(t){ // action函數必須提供,實現動畫過程中的屬性變化。            
door.setRotationY(-120 * Math.PI / 180 * t);        
}    
});
}

這邊的“reset”函數就是“重置”回到原點的功能,我們通過這個函數將所有變化過的都恢復初始的位置,包括“門”的位置:

function reset() 
{    
if (window.isAnimationRunning) 
{        
return;    
}    
g3d.setCenter([0,0,0]);    
g3d.setEye([523, 5600, 8165]);    window.forwardIndex = 0;   
 door.setRotationY(0);}

要“移動”,肯定需要走路的“路徑”,也就是我們剛剛獲取到的“path”,通過window.points = path.getPoints()._as; 獲取“path”中的所有元素,初始化window.forwardIndex = 0; 通過控制“path”中前后兩點來設置 3D 場景中的 Eye 和 Center,這樣就能營造一個我們是第一人的效果:

var point1 = points[forwardIndex],    
 point2 = points[forwardIndex + 1];var distanceX = (point2.x - point1.x),     
distanceY = (point2.y - point1.y),     
distance = Math.sqrt(distanceX * distanceX + distanceY * distanceY)-200;//兩點之間的距離通過三角形勾股定理計算 怕碰墻所以-200g3d.setEye([point1.x, 1600, point1.y]);//眼睛g3d.setCenter([point2.x, 1600, point2.y]);//我

HT 中 3D 組件有一個 walk(step, anim, firstPersonMode)方法,該函數同時改變eye和center的位置,也就是eye和center在兩點建立的矢量方向上同時移動相同的偏移量。step為偏移的矢量長度值。firstPersonMode參數為空時則默認采用Graph3dView#isFirstPersonMode()當前值, 如果為第一人稱模式調用walk操作,該函數會考慮Graph3dView#getBoundaries()邊界限制。

g3d.walk(distance, {    
frames: 50,    
interval: 30,    
easing: function(t) {return t; },    
finishFunc: function() {        
forwardIndex += 1;        
if (points.length - 2 > forwardIndex) {//points.length = 5            g3d.setCenter([point2.x, 1600, point2.y]);//把結束點變成起始點            
g3d.rotate(Math.PI / 2, 0, {               
 frames: 30,              
  interval: 30,               
 easing: function(t) {return t;},                finishFunc:function() { forward();}           
 });      
  } 
else 
{            
var lastPoint = points[points.length  - 1];//json 中path的points 的最后一個點           
 g3d.setCenter([lastPoint.x, 1400, lastPoint.y]);            
g3d.rotate(-Math.PI / 2, 0, 
{               
 frames: 30,               
 interval: 30,               
 finishFunc: function() 
{                    
window.isAnimationRunning = false;               
 }           
 });       
 }    
}});

不管“path”的點有多少個,這個判斷語句還是能運作,只在最后一個點是跳出 finishFunc 動畫結束后調用的函數,并將 window.isAnimationRunning 值設為 false 停止 startAnim 函數。如果不是最后一個點,用戶“旋轉”之后,回調 forward 函數。至此,全部代碼解釋完畢,很短的代碼量,卻做出了這么大的工程!

總結

以上所述是小編給大家介紹的基于HTML5的WebGL經典3D虛擬機房漫游動畫,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

標簽:佳木斯 十堰 咸寧 南京 淮安 廣西 西寧 酒泉

巨人網絡通訊聲明:本文標題《基于HTML5的WebGL經典3D虛擬機房漫游動畫》,本文關鍵詞  基于,HTML5,的,WebGL,經典,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《基于HTML5的WebGL經典3D虛擬機房漫游動畫》相關的同類信息!
  • 本頁收集關于基于HTML5的WebGL經典3D虛擬機房漫游動畫的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    一区二区高清在线| 国产亚洲欧美日韩日本| 欧美一级黄色录像| 亚洲激情综合网| 狠狠久久亚洲欧美| 精品国产亚洲一区二区三区在线观看| 一区二区三区91| 日本韩国精品在线| 一区二区激情小说| 在线免费av一区| 亚洲天堂中文字幕| av在线播放不卡| 亚洲一区二区3| 欧美一区二区免费观在线| 精品一区二区免费视频| 久久精品视频一区| 91麻豆国产精品久久| 亚洲欧美一区二区三区久本道91| 色哟哟在线观看一区二区三区| 国产一区二区h| 国产精品午夜久久| 色国产综合视频| 日韩成人精品在线| 精品少妇一区二区三区日产乱码 | 日韩影视精彩在线| 欧美日韩国产在线播放网站| 丝袜美腿亚洲一区| 久久久影视传媒| 成人avav在线| 日韩二区在线观看| 久久一夜天堂av一区二区三区| 成人教育av在线| 亚洲欧美一区二区三区久本道91 | 欧美成人一区二区| 成人手机电影网| 丁香天五香天堂综合| 国产日韩欧美电影| 欧美午夜寂寞影院| 国产呦精品一区二区三区网站| 一区二区视频在线看| 欧美日韩国产综合久久| 国内精品嫩模私拍在线| 亚洲成人黄色影院| 亚洲同性同志一二三专区| 日韩一区二区三区四区| 色88888久久久久久影院野外| 国产酒店精品激情| 麻豆专区一区二区三区四区五区| 亚洲欧洲美洲综合色网| 日韩女优毛片在线| 亚洲欧洲av一区二区三区久久| 欧美大尺度电影在线| 99这里只有久久精品视频| 毛片av一区二区| 亚洲综合久久久久| 欧美激情一区二区三区不卡| 一区二区三区在线免费| 91麻豆swag| 老司机精品视频在线| 国产欧美日韩精品a在线观看| 欧美日韩的一区二区| av影院午夜一区| 国产91清纯白嫩初高中在线观看| 亚洲妇熟xx妇色黄| 亚洲日本韩国一区| 久久女同性恋中文字幕| 在线亚洲高清视频| 在线亚洲高清视频| 欧美日韩在线精品一区二区三区激情 | 欧美图片一区二区三区| 99久精品国产| 国产精品18久久久久久vr| 日本女人一区二区三区| 亚洲第四色夜色| 亚洲综合色婷婷| 亚洲精品视频免费看| 久久久久久**毛片大全| 久久综合久久综合久久| 精品黑人一区二区三区久久| 欧美成人艳星乳罩| 国产午夜久久久久| 亚洲精品视频在线| 亚洲视频你懂的| 亚洲三级在线免费观看| 午夜精品久久久久久久久久久 | 91免费国产在线| 在线视频一区二区三区| 欧美日韩激情一区二区三区| 制服丝袜中文字幕亚洲| 久久先锋影音av鲁色资源| |精品福利一区二区三区| 亚洲成人动漫一区| 久久电影国产免费久久电影| 国产成人精品免费在线| 色婷婷综合久久久中文一区二区 | 日韩国产精品久久| 麻豆精品国产传媒mv男同| 高清免费成人av| 欧美色图第一页| 欧美精品一区二区三区在线| 精品久久久久久久一区二区蜜臀| www激情久久| 一区二区三区丝袜| 久久99精品久久只有精品| 97久久超碰国产精品| 欧美日韩一级片在线观看| 精品国产青草久久久久福利| ●精品国产综合乱码久久久久| 日韩国产精品久久久久久亚洲| 久久99久久99精品免视看婷婷 | 捆绑紧缚一区二区三区视频| 国产91在线|亚洲| 欧美日韩一级片网站| 国产精品久久久久影院| 秋霞电影一区二区| av在线播放成人| 在线观看国产精品网站| 在线观看免费亚洲| 国产亚洲一区字幕| 一区2区3区在线看| 国内精品国产成人| 欧美精品电影在线播放| 国产精品免费视频一区| 精品伊人久久久久7777人| 欧美一级欧美三级在线观看 | 亚洲日本护士毛茸茸| 国产盗摄精品一区二区三区在线| 91原创在线视频| 久久久久九九视频| 日本女优在线视频一区二区| 欧美午夜精品久久久久久孕妇| 国产亚洲精品aa| 九色综合狠狠综合久久| 欧美性大战久久| 亚洲精品国产成人久久av盗摄 | 国产在线视视频有精品| 欧美精品免费视频| 亚洲成人动漫精品| 欧美性xxxxx极品少妇| 亚洲人妖av一区二区| 国产高清不卡一区二区| 久久久久久久久伊人| 国产麻豆视频一区二区| 精品国产一区二区三区不卡| 久久超碰97人人做人人爱| 欧美mv和日韩mv的网站| 久久99国内精品| 国产视频一区在线播放| 成人激情免费视频| 国产人成亚洲第一网站在线播放 | 日韩午夜精品视频| 久久99国产精品久久99| 欧美成人精品3d动漫h| 婷婷久久综合九色国产成人| 制服.丝袜.亚洲.中文.综合| 秋霞电影一区二区| 久久久国产精品麻豆| 成人av在线影院| 亚洲一级在线观看| 91精品国产综合久久福利| 激情国产一区二区 | 精品久久久久一区| 国产99久久久国产精品| 最新久久zyz资源站| 欧美日韩在线不卡| 精品在线观看视频| 亚洲美女免费在线| 日韩精品专区在线影院重磅| 丰满岳乱妇一区二区三区| 亚洲黄色小说网站| 久久综合久久99| 色94色欧美sute亚洲线路一久 | 午夜精品福利一区二区三区av| 欧美一区二区精品久久911| 精品写真视频在线观看| 亚洲欧美日韩成人高清在线一区| 欧美日韩亚洲另类| 国产在线精品一区二区夜色| 亚洲人成影院在线观看| 精品久久久久久久久久久院品网 | 日韩精品中文字幕在线不卡尤物| 国产成人亚洲精品青草天美| 亚洲精品欧美二区三区中文字幕| 日韩欧美国产一区二区三区 | 久久久99久久| 欧美伊人精品成人久久综合97| 国产一区在线视频| 亚洲444eee在线观看| 久久久精品欧美丰满| 欧美肥胖老妇做爰| 国产福利精品导航| 久久机这里只有精品| 一区二区成人在线| 综合久久久久久| 精品少妇一区二区三区日产乱码| 日本黄色一区二区| aaa国产一区| 国产99久久久国产精品潘金| 美女视频一区二区| 日本不卡在线视频|