999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

智能社區三維展示系統的設計與實現

2018-09-21 10:04:34汪俊峰王星東鄭傳海
計算機技術與發展 2018年9期
關鍵詞:智能功能模型

汪俊峰,王星東,鄭傳海

(河南工業大學 信息科學與工程學院,河南 鄭州 450001)

0 引 言

隨著計算機圖形學研究的快速發展,特別是計算機硬件技術的成熟,三維虛擬現實技術在城市規劃、教育、娛樂、旅游等方面都取得了廣泛的應用成果[1]。虛擬現實技術利用計算機等硬件設備建立三維虛擬空間,為使用者帶來了視覺、聽覺、觸覺等各種感觀體驗,使其足不出戶就能身臨其境地體驗整個三維場景[2]。

二十世紀初,“智慧地球”(smart planet)這個名詞第一次被美國提出,它具有強大的信息產業基礎和領先的理念模型,在此基礎上三維智能數字化城市在政府的管理下取得了許多優秀的成果[3]。2005年7月,歐盟三維智能化城市戰略正式全面實施[4]。在此背景下,英國和荷蘭等國家前后通過并制定了一系列比較完整的三維智能數字化城市的戰略體系結構,并開始實施了一整套系統的解決方案[5]。一些歐洲國家比較重視三維虛擬數字化城市技術的研究與發展,為公共智能服務平臺制定了各種規劃[6]。在全球興起的“智慧風潮”影響下,國內一、二線城市也開始尋找適合自己的智慧社區策略[7]。2010年上海世博園的各個體系結構完美地呈現了全球“智慧城市”的高新水平,一躍領先于國內其他城市[8]。盡管如此,國內三維智能數字化社區建設的研究仍然處于初始階段,還不能形成完整的體系結構,在現實的實踐中也缺乏能夠借鑒的成功案例[9]。

1 需求分析與系統設計

1.1 需求分析

傳統的社區管理主要是通過人為的物業管理和工作人員在社區內實地工作,需較多的勞動力,并且存在工作效率低下的問題,社區工作難以有效推進。而智能社區三維展示系統可以使社區管理者對社區進行合理有效的管理,讓社區管理趨向于三維智能化、可視化,與此同時也可以為社區的居民提供更智能、便捷的社區公共服務[10]。

智能社區三維展示系統包括社區場景模型、虛擬漫游功能、社區每棟樓每一單元信息查詢、社區路燈智能管理、社區導航定位功能、社區語音介紹等模塊。

1.2 系統設計

智能社區三維展示系統的三維場景模型是通過3ds Max建模軟件制作完成的。虛擬漫游通過Unity 3d引擎的第一人稱角色控制器組件來實現,通過鍵盤與鼠標來控制視角,從而實現在虛擬場景中漫游的效果。社區路燈智能管理為社區管理者提供三維可視化查詢功能,實現社區中所有路燈的位置定位和基本屬性信息的查詢功能。社區語音介紹功能是在社區系統中實現語音播放功能,給用戶聽覺上的享受,從而對社區有進一步的了解。系統的總體框架如圖1所示。

圖1 智能社區三維展示系統的總體框架

系統實現的基本流程如下:

(1)利用3ds Max軟件對社區的地物進行建模。

(2)把模型導入到Unity 3d引擎中,添加環境光,設置陰影顯示,從而使整個三維場景都能有陰影的效果,增加真實感。

(3)通過第一人稱角色在智能社區三維展示系統中實現漫游功能。

(4)通過數據庫和編程實現社區中每棟樓的每一單元住戶信息查詢顯示和路燈位置定位以及基本屬性查詢功能。

(5)通過數據庫和編程實現社區位置的導航定位和社區智能語音介紹的功能。

2 三維場景構建

三維模型是社區三維場景中較重要的一部分,三維模型利用3ds Max三維建模軟件設計,其中后期的紋理貼圖則直接影響到模型的真實度[11]。模型不能過于簡單,過于簡單的模型的面數會很少,不能展示模型的許多細節,最終導致的結果就是模型失真;但是建筑物的面數也不能太多,因為太多的面會加重模型渲染負擔。這樣到最后會有很多高精度的模型組合在一塊,用戶在客戶端進行漫游時就會產生卡頓現象,進而影響用戶的真實體驗效果[12]。在智能社區三維展示系統中需要建立的模型有社區住戶單元樓棟、路燈、垃圾桶、地形以及其他社區公共基礎設施的三維模型等。對于那些簡單的規則建筑物,可直接用紋理貼圖來制作完成,建立簡單的模型;而對于那些比較復雜的模型,就需要進行比較復雜的建模,所以需要通過大量的面片來表現真實的建筑物。

2.1 模型制作

根據收集到的信息在3ds Max軟件中進行模型的制作,建立社區中每棟樓的外觀。根據樓棟外觀創建出樣條線拉出樓層,還有社區中的一些公共設施的模型,如路燈、社區垃圾桶等。把前期處理后的照片紋理賦予模型,展示社區的完整真實面貌。

2.2 模型導入

不同軟件建立的模型導入到Unity 3d中都要求一定的格式,3ds Max軟件建立的模型要以FBX文件格式才能導入,模型導入可能會造成模型貼圖的丟失,所以將模型從3ds Max中導出時需要注意以下問題:

(1)嵌入的媒體:如果不選擇該項,3ds Max對模型的導出不包括貼圖資源,只有貼圖路徑的引用,不能真正地導出含有貼圖的模型,貼圖的資源路徑和名稱也不能是中文。

(2)單位設置:默認情況下,3ds Max軟件導出的模型再導入Unity 3d中模型尺寸放大了100倍。因此可以在Unity 3d下Inspector面板中修改Scale Factor的值進行調整。還可以在3ds Max建模時設置基本單位為厘米。

(3)軸心設置:3ds Max導出的模型導入到Unity 3d中總會出現軸向不符合要求的情況,要經過一定的旋轉。查閱相關的資料發現,模型導入后軸向會自動偏轉,在Unity 3d中y軸是朝上的[13]。所以在導出時選擇軸轉向為z軸向上。最重要的是在模型導出時進行相關的設置。

2.3 虛擬場景構建

在整個智能社區三維展示系統的建立過程中,可以在制作三維模型的同時,將模型導入到Unity 3d軟件中,這樣做的目的是可以及時查看制作出的模型導入后的效果。把模型導入到Unity 3d引擎軟件之前,首先需要把場景中用到的所有貼圖全部導入到系統相應的文件夾下,然后在Unity 3d的模型庫中選擇適合的模型,調整尺寸以及顏色。在智能社區三維展示系統的構建制作過程中,可以修改調整建筑物周圍的環境屬性以及場景屬性,還可以進一步調整光源的方向、強度以及陰影效果的強弱和抗鋸齒效果等。整個智能社區三維展示系統的設置都是為了提高校園漫游的體驗感和用戶的真實感。

導入角色資源包,把第一人稱角色控制器(Rigid body FPS Controller)組件拖入到網格層次面板中,調整角色的位置和視角,以便場景進入到角色的視角中。主要用到的組件有Transform、Rigid body、Capsule Collider、Rigid body First Person Controller,在這些組件中修改前進的速度、爬坡的高度等參數,使角色能夠在場景中漫游。Capsule Collider是碰撞器,可以設置碰撞器的半徑和寬度,要想模型在場景中發生碰撞,在導入其他三維模型時選中模型,在檢視面板中的Generate Collider打鉤,并選擇Apply,這樣在角色控制器碰到其他物體時無法穿過。另外,角色控制器組件默認情況下移動鼠標會旋轉視角,這在某種情況下會帶來很多的困擾,所以要修改Mouse Look腳本,實現檢測到鼠標左鍵按下時才旋轉視角,在Look Rotation()方法中當按下鼠標左鍵為真時執行函數,其添加第一人稱控制器及其碰撞。

主要功能代碼如下:

float yRot=CrossPlatformInputManager.GetAxis("Mouse X")* XSensitivity;

float xRot=CrossPlatformInputManager.GetAxis("Mouse Y")* YSensitivity;

m_CharacterTargetRot*=Quaternion.Euler(0f,yRot,0f);

m_CameraTargetRot*=Quaternion.Euler(-xRot,0f,0f);

if(clampVerticalRotation)

m_CameraTargetRot=ClampRotationAroundXAxis(m_CameraTargetRot);

if(smooth)

{

character.localRotation=Quaternion.Slerp(character.localRotation,m_CharacterTargetRot,

smoothTime* Time.deltaTime);

camera.localRotation=Quaternion.Slerp (camera.localRotation,m_CameraTargetRot,

smoothTime* Time.deltaTime);

}

else

{

character.localRotation=m_CharacterTargetRot;

camera.localRotation=m_CameraTargetRot;

}

在三維智能社區中,存在著如垃圾桶、路燈、水電表、水龍頭等一系列的社區基礎設施。隨著公共基礎設施的日益增多,傳統的社區管理方式會暴露出效率低下、浪費大量勞動力資源等問題[14]。這些方式不能對設備進行智能有效的管理,人工釆集的數據會存在誤差,無法實現設備的統一管理[15]。在此背景下,三維虛擬社區應運而生,它集合社區的規劃、智能化管理以及居民的生活狀況為一體[16]。三維虛擬社區是數字化社區的重要內容,它突破了現實空間的局限性,能夠直觀形象地展示三維社區場景。該系統以社區中的樓棟單元、垃圾桶、路燈作為管理基礎,并且能夠查詢和展示每個單元的住戶信息以及路燈基本屬性信息,從而實現社區設施的智能化管理。另外,系統還實現了社區的導航功能,可節約住戶時間。

3 系統功能展示

3.1 路燈導航定位及屬性查詢功能

3.1.1 路燈導航定位功能

該系統是通過手動輸入社區路燈具體編號來實現查詢的功能,圖2是查詢系統的初始化界面。根據社區物業給路燈的不同編號,手動輸入路燈編號后,系統會自動跳轉至該對應路燈下,實現路燈的定位功能。

圖2 進入查詢系統界面

主要功能代碼如下:

GameObject.Find("RigiBodyFPSController").transform.position=GameObject.Find("deng/"+inputfield.text).transform.position;

3.1.2 路燈屬性查詢功能

路燈基本屬性功能查詢的實現,首先屬性信息的顯示是通過數據庫系統實現的,在數據庫中創建Streelight表(見圖3),輸入NO(路燈編號)、Power(路燈功率)、Lifelength(路燈使用壽命)、Changeovertime(路燈更換時間)等屬性信息。再通過Query腳本實現路燈基本屬性查詢的功能。

主要功能代碼如下:

public Text text1;

圖3 Streelight屬性表

public Text text2;

public Text text3;

public Text text4;

public InputField inputfield;

public Imageaaaa;

private GameObject Roadlight;

public GameObject person;

private Vector3 offset;

static string path="Data Source="+"C:/Users/用戶名/Documents/New Unity Project/Assets/mydatabase2.sqlite";

SqliteConnection connection = new SqliteConnection(path);

private bool IsFind=false;

void Start()

{

offset=new Vector3(0,50,30);

}

public void Load()

{

GameObject.Find("RigidBodyFPSController").transform.position=GameObject.Find("deng/"+inputfield.text).transform.position;

//建立一個連接

connection.Open(); //打開連接

SqliteCommand command=new SqliteCommand(connection);//建立一個對連接的管理

stringstr="select ID,No,Power,Lifelength,Changeovertime from Streetlight";//

command.CommandText=str;

SqliteDataReader reader=command.ExecuteReader();

while(reader.Read())

{

if(inputfield.text==reader[1].ToString())

{

text1.text=reader[1].ToString();

text2.text=reader[2].ToString();

text3.text=reader[3].ToString();

text4.text=reader[4].ToString();

aaaa.gameObject.SetActive(true);

break;

}

}

connection.Close();

}

3.2 社區單元住戶信息查詢

該系統的社區樓棟屬性查詢是直接通過鼠標點擊社區樓棟社區中的每棟單元樓,系統會直接查詢該樓棟單元的,例如該樓棟單元ID、業主名字、老人數量、小孩數量以及租戶數量等。其中住戶信息的顯示是通過數據庫實現的,再通過QueryClass腳本實現樓棟基本屬性查詢的功能。

主要功能代碼如下:

public staticQueryClass instance;

public UILabel labID;

public UILabel labzhuhu;

public UILabel lablaoren;

public UILabel labxiaohai;

public UILabel labzuhu;

static string path1="Data Source="+"G:/論文/mydatabase3.sqlite";

SqliteConnection connection1=new SqliteConnection(path1);

private bool IsFind=false;

void Start()

{

instance=this;

}

public void Load(string tag )

{

//建立一個連接

connection1.Open();//打開連接

SqliteCommand command=new SqliteCommand(connection1);//建立一個對連接的管理

stringstr="select NO,zhuhu,laoren,xiaohai,zuhu from shuxing";//

command.CommandText=str;

SqliteDataReader reader=command.ExecuteReader();

while(reader.Read())

{

if(ta ==reader[0].ToString())

{

labID.text=reader[0].ToString();

labzhuhu.text=reader[1].ToString();

lablaoren.text=reader[2].ToString();

labxiaohai.text=reader[3].ToString();

labzuhu.text=reader[4].ToString();

break;

}

}

connection1.Close();

}

}

3.3 社區單元導航定位功能

社區內導航定位功能使用戶能夠準確地定位社區每個單元的位置。該系統的位置導航功能有兩種:一種是通過下拉框的形式,準確定位社區中每棟單元樓的位置,以第一人稱的視角帶領用戶沿著最近路線走到單元樓下;另一種是通過鼠標直接點擊目的地,系統會直接導航到終點位置;最終實現導航定位功能。

主要功能代碼如下:

private UnityEngine.AI.NavMeshAgent agent;

public UILabel pop;

private string lab;

public GameObject pos1;

public GameObject pos2;

public GameObject pos3;

void Start () {

agent=GetComponent();

}

void Update () {

if(Input .GetMouseButtonDown(1) )

{

Ray ray=new Ray();

Ray=Camera.main.ScreenPointToRay(Input.mousePosition);

RaycastHit hit;

if(Physics.Raycast(ray, out hit))

{

Vector3 pos=hit.point;

pos.y=transform.position.y;

agent.destination=pos;

}

}

if(pop.text=="fiveth")

{

Ray ray=new Ray();

ray=Camera.main.ScreenPointToRay(Input.mousePosition);

RaycastHit hit;

if(Physics.Raycast(ray, out hit))

{

agent.destination=pos2.transform.position;

}

}

if(pop.text=="ninth")

{

Ray ray=new Ray();

ray=Camera.main.ScreenPointToRay(Input.mousePosition);

RaycastHit hit;

if(Physics.Raycast(ray,out hit))

{

agent.destination=pos3.transform.position;

}

}

}

}

3.4 社區語音智能介紹

在Unity 3d平臺上,通過播放一段關于金城灣社區的背景語音說明,從而能夠更加具體地了解該小區,并且能夠給人們一種聽覺上的享受(手動按鍵盤“B”鍵為語音的播放鍵,“P”鍵為語音的播放暫停鍵)。

主要功能代碼如下:

if(Input.GetKeyDown(KeyCode.B))

{

Sound.instace.PlayBG("ef2");

}

if(Input.GetKeyDown(KeyCode.N))

{

Sound.instace.PlayBG("bg2");

}

if(Input.GetKeyDown(KeyCode.KeypadPlus))

{

Sound.instace.BGVolume+=0.1f;

}

if(Input.GetKeyDown(KeyCode.KeypadMinus))

{

Sound.instace.BGVolume-=0.1f;

}

if(Input.GetKeyDown(KeyCode.P))

{

Sound.instace.BGMute();}

3.5 功能實現與概述

系統主要設計了社區每個單元和路燈的智能導航及屬性信息的顯示、智能語音介紹等功能,在Unity中做好發布的準備后點擊Build按鈕,選擇發布的位置,Unity會在相應的文件夾下生成一個數據文件夾和一個.exe可執行的文件。點擊.exe文件運行生成金城灣社區智能社區三維展示系統,系統可以很好地運行,而且操作界面友好。

以下是智能社區三維展示系統的相關功能展示。

(1)路燈位置查詢功能。

輸入要查詢的路燈ID,系統即可自動定位到目標的路燈位置。例如,路燈004的位置定位效果,如圖4所示。

(2)路燈屬性信息查詢功能。

在找到的目標路燈上,右鍵點擊路燈,即可查詢路燈的編號、功率、生命周期和上次更換的時間等相關信息。例如,路燈005的屬性信息查詢,如圖5所示。

圖4 路燈004的位置查詢

圖5 路燈005屬性查詢

(3)社區單元住戶信息查詢功能。

在需要查詢的單元住戶信息的單元上,直接通過鼠標點擊社區樓棟社區中的單元樓,即可查詢該樓棟單元的單元ID、業主名字、老人數量、小孩數量以及租戶數量等。圖6所示為9號單元樓的住戶信息。

圖6 9號單元樓的住戶信息

(4)社區單元導航定位功能。

一種通過下拉框的形式,準確定位社區中每棟單元樓的位置,以第一人稱的視角帶領用戶沿著最近路線走到單元樓下;另一種通過鼠標直接點擊目的地,系統會直接導航到終點位置;最終實現導航定位功能。

(5)智能社區語音介紹功能。

運行系統后,系統會自動播放金城灣社區的語音介紹背景音樂,增加系統的趣味性。

4 結束語

通過使用Photoshop圖片處理軟件處理紋理貼圖,3ds Max三維建模軟件制作社區建筑物、地形、樹木等社區的三維模型,Unity 3d三維引擎軟件對整個場景進行后期編輯、導航定位、屬性查詢功能開發,構建智能社區三維展示系統。該系統不但可以讓用戶在計算機上通過地面瀏覽進行漫游,還可以實現對社區樓棟每個單元住戶的信息顯示和路燈位置屬性信息的查詢及顯示,使用戶在虛擬漫游系統中有很強的真實感。該系統一定程度上減輕了管理人員的工作強度,提高了工作效率,但仍需對系統的界面和功能進行進一步的改進和完善。

猜你喜歡
智能功能模型
一半模型
也談詩的“功能”
中華詩詞(2022年6期)2022-12-31 06:41:24
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
智能前沿
文苑(2018年23期)2018-12-14 01:06:06
智能前沿
文苑(2018年19期)2018-11-09 01:30:14
智能前沿
文苑(2018年17期)2018-11-09 01:29:26
智能前沿
文苑(2018年21期)2018-11-09 01:22:32
關于非首都功能疏解的幾點思考
3D打印中的模型分割與打包
主站蜘蛛池模板: 久久天天躁狠狠躁夜夜2020一| 日韩视频免费| 国产欧美亚洲精品第3页在线| 热久久国产| 免费观看三级毛片| 99精品视频九九精品| 久久国产V一级毛多内射| 在线免费看黄的网站| 国产91小视频| 国产精品亚洲精品爽爽| 欧美精品高清| 亚洲综合激情另类专区| 色婷婷亚洲综合五月| 免费毛片a| 国产色爱av资源综合区| 日本手机在线视频| 成人蜜桃网| 亚洲日韩精品无码专区97| 精品视频第一页| 色综合久久久久8天国| 国产成人精品免费视频大全五级| 网久久综合| 亚洲国产看片基地久久1024| 国产精品女同一区三区五区 | a级毛片视频免费观看| 日韩人妻无码制服丝袜视频| 成人午夜视频免费看欧美| 91国内在线视频| 国产精品太粉嫩高中在线观看| 日本午夜精品一本在线观看| 69av在线| 免费看一级毛片波多结衣| 日韩欧美国产精品| 91精品国产福利| 久久中文无码精品| 成人国产一区二区三区| 人妻精品久久无码区| 亚洲日韩每日更新| 亚洲中文字幕无码mv| 欧美一区二区啪啪| 九九免费观看全部免费视频| 国产成人精品高清不卡在线| 日韩在线网址| 制服丝袜国产精品| 国产91av在线| 精品福利一区二区免费视频| 中文字幕天无码久久精品视频免费| 久久精品一品道久久精品| 国产精品亚洲а∨天堂免下载| 欧美不卡二区| 91久久天天躁狠狠躁夜夜| 香蕉视频在线精品| 亚洲欧美综合在线观看| 国产青榴视频| 国产一级视频久久| 无码国产偷倩在线播放老年人 | 玩两个丰满老熟女久久网| 精品国产三级在线观看| 色有码无码视频| 香蕉视频国产精品人| 在线播放国产一区| 日日碰狠狠添天天爽| 青草精品视频| 久久无码av三级| 国产精品第页| 久夜色精品国产噜噜| 无码区日韩专区免费系列| 99热亚洲精品6码| 毛片网站在线看| 呦女亚洲一区精品| 人妻无码一区二区视频| 色妺妺在线视频喷水| 免费在线成人网| 欧美另类图片视频无弹跳第一页| 欧美一级黄色影院| 色噜噜中文网| 国产成人精品亚洲日本对白优播| 农村乱人伦一区二区| 亚洲精品成人7777在线观看| 久久精品国产精品一区二区| 亚洲成人网在线观看| 久久五月天国产自|