2012-07-06 12 views
8

के रूप में एक तीन.जेएस जाल निर्यात करना मैं एक पैरामीट्रिक थ्री.जेएस जाल ऑब्जेक्ट के लिए ओबीजे या एसटीएल लिंक के रूप में निर्यात करना चाहता हूं। http://www.3dtin.comएक ओबीजे या एसटीएल

पर निर्यात विकल्प की तरह ही किसी भी सलाह की सराहना की जाएगी।

उत्तर

1

मैं पहले पाइथन ओबीजे -> तीन.जेएस कनवर्टर में देखता हूं।

इसे छोड़कर, मुझे नहीं लगता कि आपको ऐसा करने के लिए पूर्व-निर्मित कोई भी पुस्तकालय ढूंढने जा रहे हैं। अगर मैं लाइब्रेरी का इस्तेमाल करता हूं या अगर उन्होंने इसे घर में विकसित किया है तो मैं वास्तव में 3DTin से पूछूंगा।

3

OBJExporter लिखना बहुत आसान होना चाहिए। बस OBJLoader संदर्भ के रूप में उपयोग करें। कुछ हफ्तों में मैं शायद इसे खुद लिखूंगा यदि किसी ने तब तक ऐसा नहीं किया है।

+0

धन्यवाद! मुझे लगता है कि यह बेहद उपयोगी होगा। – user1507511

7

प्राप्त करने के लिए .obj प्रारूप मैं इस साधारण समारोह का उपयोग में जाल:

THREE.saveGeometryToObj = function (geometry) { 
var s = ''; 
for (i = 0; i < geometry.vertices.length; i++) { 
    s+= 'v '+(geometry.vertices[i].x) + ' ' + 
    geometry.vertices[i].y + ' '+ 
    geometry.vertices[i].z + '\n'; 
} 

for (i = 0; i < geometry.faces.length; i++) { 

    s+= 'f '+ (geometry.faces[i].a+1) + ' ' + 
    (geometry.faces[i].b+1) + ' '+ 
    (geometry.faces[i].c+1); 

    if (geometry.faces[i].d !== undefined) { 
     s+= ' '+ (geometry.faces[i].d+1); 
    } 
    s+= '\n'; 
} 

return s; 
} 
+0

क्या आपके पास एक काम कर रहे उदाहरण ज्यामिति ऑब्जेक्ट है जो इसके साथ काम करता है? मुझे 'लंबाई अपरिभाषित' हो रही थी, लेकिन मैं एक तिहाई विमान बफर जाल को बचाने की कोशिश कर रहा हूं, तो शायद ऑब्जेक्ट प्रारूप अलग है? –

0

मैं ऊपर कोड बदलाव थोड़ा वस्तुओं की सरणियों कि दोहराया गया है और एक दृश्य में चारों ओर अनुवाद के लिए अनुमति देने के लिए। मैं वर्तमान में दस्तावेज़ का उपयोग कर रहा हूं। राइटेलन मैन्युअल रूप से एक दस्तावेज़ में प्रतिलिपि बनाना और चिपकाना।

var l = parent.length; 
var j = 0; 

while (l--) { 

var numVerts = parent[l].children[0].geometry.vertices.length; 
document.writeln(THREE.saveGeometryToObj(parent[l].children[0],j*(numVerts)));  

j++; 
} 

THREE.saveGeometryToObj = function (geo,nums) { 

geo.updateMatrixWorld(); 
var num = parseInt(nums); 
var s = ''; 

for (i = 0; i < geo.geometry.vertices.length; i++) { 

    var vector = new THREE.Vector3(geo.geometry.vertices[i].x, geo.geometry.vertices[i].y, geo.geometry.vertices[i].z); 
    geo.matrixWorld.multiplyVector3(vector); 


    s+= 'v '+(vector.x) + ' ' + 
    vector.y + ' '+ 
    vector.z + '</br>'; 
} 

for (i = 0; i < geo.geometry.faces.length; i++) { 

    s+= 'f '+ (geo.geometry.faces[i].a+1+num) + ' ' + 
    (geo.geometry.faces[i].b+1+num) + ' '+ 
    (geo.geometry.faces[i].c+1+num); 

    if (geo.geometry.faces[i].d!==undefined) { 
     s+= ' '+ (geo.geometry.faces[i].d+1+num); 
    } 
    s+= '</br>'; 
} 

return s; 

}

संबंधित मुद्दे