作業4是要求實現半徑濾波:
k近鄰尋找:(這裡沒有使用資料結構)
def find_knn(p,pc,k=10):
pc_diff=pc-p.reshape(1,3)
dist=np_lin.norm(pc_diff,axis=1)
idx=np.argsort(dist)[:k]
return idx,dist[idx]
半徑濾波:
for i in range(pc.shape[0]):
idx, dist=find_knn(pc[i],pc,10)
if (dist[-1]>0.005):
pc=np.delete(pc,i,0)
0.005為閾值(k近鄰中 距離最遠的點);
****的是使用flann庫的
if false:
import cv2
# algorithm=1: kd-tree, trees=5:構建5棵樹,加快搜尋(1-16), checks=50: 查詢遞迴次數
flann = cv2.flannbasedmatcher(dict(algorithm=1, trees=16), dict(checks=50))
# knn搜尋
print('knn (opencv)')
matches = flann.knnmatch(pc,pc,k=10)
print('filtering...')
pc_new=np.array([pc[i] for i,m in enumerate(matches) if max([n.distance for n in m])<0.005])
# 用pcl實現knn檢測
else:
import pcl
cloud = pcl.pointcloud(pc.astype(np.float32))
# 構建kdtree用於快速最近鄰搜尋
kdtree = cloud.make_kdtree_flann()
# k近鄰搜尋
print('knn (pcl)')
[idx, dist] = kdtree.nearest_k_search_for_cloud(cloud, 10)
print('filtering...')
pc_new=pc[np.max(dist,axis=1)<0.005**2]
作業5(對給定點雲, 從中檢測出平面和直線的引數) 不要為3d而3d
和以前的幾個朋友聊天,也有做game的。發現大家對3d技術都非常熱衷,但是這種熱衷顯得刻意的 為3d而3d,就有點捨本逐末。1 遊戲最重要的是策劃,需要具體的滿足人心底的某種需求,2 3d需要 好顯示卡的支援,這樣就將一部分使用者排斥在外面了。3 現在3d engine已經 很成熟了,通過這些上面的...
3D遊戲程式設計與設計作業一
所使用的思維導圖繪圖工具為mindmaster。華為應用 的遊戲排行榜前20名如下 9月22日 1王者榮耀 2和平精英 3迷你世界 4我的世界 5開心消消樂 6穿越火線 7貪吃蛇大作戰 8植物大戰殭屍2 9陰陽師 10湯姆貓跑酷 從排行榜可以看出,第1的王者榮耀 第2的和平精英 第6的穿越火線是屬於...
3D遊戲程式設計與設計作業六
按 adapter模式 設計圖修改飛碟遊戲 使它同時支援物理運動與運動學 變換 運動 原專案 3d程式設計與遊戲設計作業五 僅僅對其中的一些類進行改動就能實現。飛碟預設 由於要求支援物理運動,因此飛碟的預設需要在原來的基礎上加上剛體 adapter的實現 adapter是通過不同的狀態選擇不同的介面...