亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識(shí)庫 > 基于HTML5的WebGL經(jīng)典3D虛擬機(jī)房漫游動(dòng)畫

基于HTML5的WebGL經(jīng)典3D虛擬機(jī)房漫游動(dòng)畫

熱門標(biāo)簽:江蘇智能電銷機(jī)器人哪家好 當(dāng)涂高德地圖標(biāo)注 成都智能外呼系統(tǒng)平臺(tái) 鎮(zhèn)江智能外呼系統(tǒng)有效果嗎 云南大理400電話申請官方 南寧點(diǎn)撥外呼系統(tǒng)哪家公司做的好 四川點(diǎn)撥外呼系統(tǒng) 黃島區(qū)地圖標(biāo)注 電銷機(jī)器人電話用什么卡

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

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

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

現(xiàn)在 3D 發(fā)展地如此迅速也要感謝人類對(duì)于“現(xiàn)實(shí)”的追求,所以學(xué)好用好 3D 是未來成功必不可少的一部分。

本文例子的思路是進(jìn)入一個(gè)機(jī)房參觀,打開門的動(dòng)作是再生動(dòng)不過了, 再加上適當(dāng)?shù)剞D(zhuǎn)彎,基本上完全模擬了人在機(jī)房中參觀的效果。還有一個(gè)好處就是,如果要演示給領(lǐng)導(dǎo)看而又不用操作,這種炫酷的效果領(lǐng)導(dǎo)一定會(huì)很滿意!

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

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

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

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

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

既然我們已經(jīng)搭建好環(huán)境,轉(zhuǎn)成了 json 文件,代碼中不好控制,這種情況下我們會(huì)將 DataModel 數(shù)據(jù)模型再反序列化,這個(gè)函數(shù)的功能就是將 json 格式轉(zhuǎn)成對(duì)象,并將反序列化的對(duì)象傳入到 DataModel 數(shù)據(jù)模型中,詳情請參考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 數(shù)據(jù)模型,獲取這兩個(gè)數(shù)據(jù):

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

這個(gè)例子中簡單來說就只有四個(gè)動(dòng)作,“重置”回到原點(diǎn)、“開始動(dòng)作”、“向前移動(dòng)”,“停止”。點(diǎn)擊“開始”按鈕,在“開始動(dòng)作”中我們只做了一個(gè)動(dòng)作,“開門”動(dòng)作,動(dòng)作結(jié)束之后調(diào)用“forward”函數(shù)向前移動(dòng):

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

這邊的“reset”函數(shù)就是“重置”回到原點(diǎn)的功能,我們通過這個(gè)函數(shù)將所有變化過的都恢復(fù)初始的位置,包括“門”的位置:

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

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

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;//兩點(diǎn)之間的距離通過三角形勾股定理計(jì)算 怕碰墻所以-200g3d.setEye([point1.x, 1600, point1.y]);//眼睛g3d.setCenter([point2.x, 1600, point2.y]);//我

HT 中 3D 組件有一個(gè) walk(step, anim, firstPersonMode)方法,該函數(shù)同時(shí)改變eye和center的位置,也就是eye和center在兩點(diǎn)建立的矢量方向上同時(shí)移動(dòng)相同的偏移量。step為偏移的矢量長度值。firstPersonMode參數(shù)為空時(shí)則默認(rèn)采用Graph3dView#isFirstPersonMode()當(dāng)前值, 如果為第一人稱模式調(diào)用walk操作,該函數(shù)會(huì)考慮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]);//把結(jié)束點(diǎn)變成起始點(diǎn)            
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 的最后一個(gè)點(diǎn)           
 g3d.setCenter([lastPoint.x, 1400, lastPoint.y]);            
g3d.rotate(-Math.PI / 2, 0, 
{               
 frames: 30,               
 interval: 30,               
 finishFunc: function() 
{                    
window.isAnimationRunning = false;               
 }           
 });       
 }    
}});

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

總結(jié)

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

標(biāo)簽:佳木斯 十堰 咸寧 南京 淮安 廣西 西寧 酒泉

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《基于HTML5的WebGL經(jīng)典3D虛擬機(jī)房漫游動(dòng)畫》,本文關(guān)鍵詞  基于,HTML5,的,WebGL,經(jīng)典,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《基于HTML5的WebGL經(jīng)典3D虛擬機(jī)房漫游動(dòng)畫》相關(guān)的同類信息!
  • 本頁收集關(guān)于基于HTML5的WebGL經(jīng)典3D虛擬機(jī)房漫游動(dòng)畫的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    亚州视频一区二区| 日韩一级黄色大片| 毛片的网站| 午夜欧美成人久久久久久| 日韩免费在线视频| 久久精品店| 日韩字幕在线| 日韩中文字幕一区| 久久福利影视| 国产精品1024永久免费视频 | 日韩avdvd| 日韩字幕在线| 精品国产一区二区三区久| 精品视频在线观看一区二区| 久久福利影视| 毛片的网站| 欧美a免费| 精品在线观看一区| 九九免费高清在线观看视频| 天天做日日爱| 国产成人精品影视| 成人影院一区二区三区| 亚飞与亚基在线观看| 黄视频网站免费看| 精品视频一区二区三区免费| 久久99青青久久99久久| 99久久精品国产免费| 久久99爰这里有精品国产| 久草免费在线观看| 国产91精品一区| 成人免费观看网欧美片| 久草免费在线观看| 精品久久久久久中文字幕一区| 国产a网| 国产一级强片在线观看| 国产一区二区精品在线观看| 国产麻豆精品| 精品视频一区二区三区免费| 91麻豆精品国产高清在线| 国产成人啪精品视频免费软件| 日韩avdvd| 国产韩国精品一区二区三区| 四虎影视精品永久免费网站| 欧美激情一区二区三区在线播放| 亚洲 激情| 日韩一级黄色大片| 亚洲女初尝黑人巨高清在线观看| 深夜做爰性大片中文| 亚洲精品影院| 精品国产一区二区三区免费| a级毛片免费观看网站| 成人a大片在线观看| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 日韩免费在线视频| 91麻豆精品国产综合久久久| 精品国产亚一区二区三区| 午夜家庭影院| 国产伦理精品| 精品美女| 99久久精品国产免费| 国产一级生活片| 欧美a级成人淫片免费看| 精品视频在线看 | 99久久网站| 中文字幕97| 中文字幕一区二区三区精彩视频| 欧美国产日韩在线| 麻豆网站在线看| 999精品影视在线观看| 欧美另类videosbestsex视频 | 深夜做爰性大片中文| 四虎影视库| 欧美电影免费看大全| 国产综合91天堂亚洲国产| 精品视频在线观看视频免费视频 | 国产国语对白一级毛片| 国产网站免费观看| 九九九网站| 99色精品| 精品视频一区二区| 久久福利影视| 成人免费一级毛片在线播放视频| 国产精品自拍在线观看| 91麻豆tv| 成人在激情在线视频| 日韩一级黄色| 久久国产一久久高清| 久久国产精品只做精品| 久久成人亚洲| 精品视频在线观看视频免费视频| 欧美1区| 精品视频在线观看一区二区| 国产网站在线| 国产不卡在线观看视频| 亚洲第一色在线| 精品视频免费观看| 国产高清视频免费观看| 欧美一级视频免费观看| 欧美一级视频免费| 久久久久久久久综合影视网| 一级片免费在线观看视频| 国产美女在线观看| 夜夜操网| 国产伦久视频免费观看 视频| 黄色免费三级| 精品视频在线观看免费| 欧美电影免费看大全| 韩国毛片| 99久久网站| 日本在线www| 精品久久久久久综合网| 成人av在线播放| 亚欧成人乱码一区二区| 国产原创视频在线| 国产网站麻豆精品视频| 欧美激情一区二区三区视频 | 午夜在线亚洲男人午在线| 91麻豆精品国产自产在线 | 国产不卡在线播放| 天天色成人| 你懂的日韩| 国产网站免费在线观看| 日韩中文字幕一区| 精品国产一级毛片| 亚洲女人国产香蕉久久精品 | 九九热国产视频| 日韩男人天堂| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 国产伦精品一区三区视频| 成人在激情在线视频| 天天做人人爱夜夜爽2020毛片| 国产精品免费久久| 精品久久久久久中文字幕一区| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 韩国三级香港三级日本三级la| 精品视频在线观看视频免费视频 | 日本免费看视频| 日韩免费片| 精品久久久久久综合网| 黄色短视屏| 成人在激情在线视频| 日韩在线观看网站| 国产精品免费久久| 韩国毛片免费大片| 欧美日本韩国| 精品国产一区二区三区久久久蜜臀| 国产高清视频免费| 国产91精品系列在线观看| 久久福利影视| 黄色短视屏| 999久久狠狠免费精品| 午夜在线亚洲男人午在线| 国产高清视频免费| 91麻豆精品国产高清在线| 欧美一级视频免费| 精品在线视频播放| 欧美18性精品| 欧美激情一区二区三区在线播放| 麻豆网站在线免费观看| 国产一区二区精品在线观看| 青青青草影院 | 99久久精品国产麻豆| 黄色免费网站在线| 日本特黄特色aaa大片免费| 九九精品久久久久久久久| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 国产麻豆精品免费密入口| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 成人高清护士在线播放| 九九久久99综合一区二区| 久久国产精品只做精品| 午夜精品国产自在现线拍| 91麻豆精品国产自产在线| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 天天做人人爱夜夜爽2020毛片| 免费国产一级特黄aa大片在线| 四虎影视库| 精品国产香蕉在线播出 | 999久久狠狠免费精品| 亚洲 激情| 精品国产一区二区三区久久久蜜臀| 日本伦理片网站| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 香蕉视频亚洲一级| 一级女性大黄生活片免费| 成人免费观看的视频黄页| 91麻豆精品国产自产在线| 国产不卡精品一区二区三区| 美国一区二区三区| 国产麻豆精品免费密入口| 国产原创视频在线| 欧美另类videosbestsex高清| 日日夜夜婷婷| 免费国产在线观看| 二级特黄绝大片免费视频大片| 亚洲 欧美 成人日韩| 国产麻豆精品| 亚洲第一页乱| 成人a大片高清在线观看| 久久成人亚洲|