点群削減に関する学部論文を書いています。
法線を外側に向ける必要があります。私はしばらくの間これに苦労してきました。
これが私がやろうとしている方法です。オブジェクト、特にスタンフォードバニーの点群があります。このオブジェクトの拡大版を作成し、その中に縮小版を配置します。次に、法線を外側の「大きい」オブジェクトの方向に向けます。
大きなオブジェクトを小さなオブジェクトの上に配置すると、それらが接触せずに配置できません。つまり、ウサギの耳が重なっています。小さなオブジェクトを大きなオブジェクトの中に収める方法を知っている人はいますか。
これまでの私のコードは次のとおりです。
import numpy as np
#IMPORT THE OBJECT POINT CLOUD
c= np.genfromtxt(str('rabbitsmall') + '.txt',autostrip=True)
#Determine the x centre of the original object
xmax = np.amax(c[:,0])
xmin = np.amin(c[:,0])
tx = xmin+(xmax-xmin)/4
#Determine the y centre of the original object
ymax = np.amax(c[:,1])
ymin = np.amin(c[:,1])
ty =ymin+(ymax-ymin)/4
#Determine the z centre of the original object
zmax = np.amax(c[:,2])
zmin = np.amin(c[:,2])
tz = zmin+(zmax-zmin)/2
#CREATE A LARGER VERSION OF THE OBJECT
C = np.zeros((len(c),3))
for i in range(0,len(c)):
C[i][0]= 1.2*c[i][0]
C[i][1]= 1.2*c[i][1]
C[i][2]= 1.2*c[i][2]
#Determine the x centre of the larger object
Xmax = np.amax(C[:,0])
Xmin = np.amin(C[:,0])
TX = Xmin+(Xmax-Xmin)/4
#Determine the y centre of the larger object
Ymax = np.amax(C[:,1])
Ymin = np.amin(C[:,1])
TY =Ymin+(Ymax-Ymin)/4
#Determine the z centre of the larger object
Zmax = np.amax(C[:,2])
Zmin = np.amin(C[:,2])
TZ = Zmin+(Zmax-Zmin)/2
#TRANSLATE THE LARGER OBJECT TO BE OVER THE SMALLER OBJECT. IE THE CENTRES ARE AT THE SAME PLACE
for i in range(0,len(c)):
C[i][0]= C[i][0]-(TX-tx)
C[i][1]= C[i][1]-(TY-ty)
C[i][2]= C[i][2]-(TZ-tz)
np.savetxt('rabbitlarger.txt',C)