虛擬駕駛環境搭建 四

2021-08-03 19:39:28 字數 1560 閱讀 8202

在之前的版本中.我們的障礙物移動和場景移動放在同乙個for迴圈中,雖然減少了**的操作,但是很容易出現邊界問題,程式執行中往往會出現障礙物驟現,或者障礙物還未抵達車前方便突然消失的情況,為了修改這齣bug,我將重寫這部分**.

無腦寫**的多數結果都是bug不斷,並且寫完後文就忘記前文.為了提高**的清晰度和準確性,挺屍幫我們捋清思路,我們先通過寫偽**的方式整理一下我們的程式有哪些需求,以及粗略的實現方式.

障礙物能夠從左側樓棟出現,到達路**之後,將停留一小段時間(等待車撞上).

對這個過程進行分解分析,我們可以大致得到如下流程:

如果當前狀態為靜止, 並且停留時間還未到達2s,保持pos不變

// 先獲取左側建築情況

int left_temp = building_left_flag;

if(left_temp >> 11 & 0b1 == 1)

}}else

glbindtexture(gl_texture_2d, texture[4]);

glloadidentity();

gltranslatef(child_run_len, -1.0f, -7.0f);

glcalllist(children);

if(child_run_len >= -0.5)

child_run_len = -0.5f;

}else

}elseelse

}

為了和真實駕駛更加相似,我們不應該讓障礙物只從單側出現,而是因該讓其兩側都有可能出現.因此,我們需要在原來的**上進行進一步的修改.

如果障礙物從兩側出現的話, 每次障礙物將要出現的時候, 我們需要用乙個flag標誌儲存障礙物本次出現是從左側出現還是右側出現. 在繪製障礙物的時候, 我們將通過這個flag來判斷物體是如何運動.

int left_temp = building_left_flag;

int right_temp = building_right_flag;

if(left_temp >> 11 & 0b1 == 1)

}} else

glbindtexture(gl_texture_2d, texture[4]);

glloadidentity();

gltranslatef(child_run_len, -1.0f, -7.0f);

glcalllist(children);

if(child_run_len >= -0.5)

child_run_len = -0.5f;

} else

} else else

}}else

// 奇數為左側, 偶數為右側

if(rand() & 0b1 == 1)

}else}}

} else

if(left_or_right_flag == 1)

child_run_len = -0.5f;

} else

}else

} else

}} else else

}}

虛擬駕駛環境搭建 一

本篇部落格將對整個虛擬環境的搭建進行乙個綜述,後續將會對環境中各個功能的實現進行一一解釋分析.整個pro實現了模仿一輛車在街道上進行賓士的場景 目前實現的是在直道上行駛,後續會加入轉彎功能 專案的執行效果如圖所示.為了實現上述功能,我將整個專案大致分為如下幾塊.其中,本次專案是基於opengl學習 ...

虛擬環境搭建

使用虛擬環境的原因 如果在一台電腦上,想開發多個不同的專案,需要用到同乙個包的不同版本,如果使用上面的命令,在同乙個目錄下安裝或者更新,新版本會覆蓋以前的版本,其它的專案就無法執行了。1.安裝虛擬環境 sudo pip install virtualenv安裝完虛擬環境後,如果提示找不到mkvirt...

搭建虛擬環境

一 安裝虛擬環境的命令 sudo pip install virtualenv二 安裝完虛擬環境後,如果提示找不到mkvirtualenv命令,須配置環境變數 1 建立目錄用來存放虛擬環境 mkdir home virtualenvs2 開啟 bashrc檔案 sudo vim bashrc3 在檔...