मैं अजगर में शुरू हो रही राइनो से बनाए गए 3D जाल voxelize (जो मैं लगभग कुछ भी नहीं पता की) पर मदद की ज़रूरत voxelize। डेटा इनपुट एक ओबीजे फ़ाइल होगी और आउटपुट भी होगा। इस उपयोग के लिए अंतिम उद्देश्य एक इमारत के भीतर दो बिंदुओं के बीच सबसे छोटी दूरी को ढूंढना है। लेकिन यह बाद में है। अभी के लिए, मुझे पहले एक 3 डी जाल voxelize करने की जरूरत है। Voxelization primitive सिर्फ एक साधारण घन हो सकता है।अजगर में, कैसे करना है मैं एक 3 डी जाल
अब तक मैं एक ओबीजे फ़ाइल पार्सर से और वी, वीटी, वीएन, एफ उपसर्गों के साथ पार्स किए गए ओबीजे से बाहर पढ़ सकता हूं, और 3 डी ऑब्जेक्ट के बाध्यकारी बॉक्स को खोजने के लिए उन निर्देशांकों का उपयोग कर सकता हूं। जाल को voxelize करने के लिए सही तरीका क्या होना चाहिए?
import objParser
import math
inputFile = 'test.obj'
vList = []; vtList = []; vnList = []; fList = []
def parseOBJ(inputFile):
list = []
vList, vtList, vnList, fList = objParser.getObj(inputFile)
print 'in parseOBJ'
#print vList, vtList, vnList, fList
return vList, vtList, vnList, fList
def findBBox(vList):
i = 0; j=0; x_min = float('inf'); x_max = float('-inf'); y_min = float('inf');
y_max = float('-inf'); z_min = float('inf'); z_max = float('-inf');
xWidth = 0; yWidth = 0; zWidth =0
print 'in findBBox'
while i < len(vList):
#find min and max x value
if vList[i][j] < x_min:
x_min = float(vList[i][j])
elif vList[i][j] > x_max:
x_max = float(vList[i][j])
#find min and max y value
if vList[i][j + 1] < y_min:
y_min = float(vList[i][j + 1])
elif vList[i][j + 1] > y_max:
y_max = float(vList[i][j + 1])
#find min and max x value
if vList[i][j + 2] < z_min:
z_min = vList[i][j + 2]
elif vList[i][j + 2] > z_max:
z_max = vList[i][j + 2]
#incriment the counter int by 3 to go to the next set of (x, y, z)
i += 3; j=0
xWidth = x_max - x_min
yWidth = y_max - y_min
zWidth = z_max - z_min
length = xWidth, yWidth, zWidth
volume = xWidth* yWidth* zWidth
print 'x_min, y_min, z_min : ', x_min, y_min, z_min
print 'x_max, y_max, z_max : ', x_max, y_max, z_max
print 'xWidth, yWidth, zWidth : ', xWidth, yWidth, zWidth
return length, volume
def init():
list = parseOBJ(inputFile)
findBBox(list[0])
print init()
बिनवोक्स [इस स्थान] में स्थानांतरित हो गया है (http://www.patrickmin.com/binvox/) –
जानकारी @A_A के लिए धन्यवाद, मैंने लिंक अपडेट किया है । – kolenda