मेरे पास ऑब्जेक्ट 3 डी में समूहीकृत कई ऑब्जेक्ट्स हैं। मैं उस समूह में कुछ विशिष्ट वस्तुओं को छोड़कर, पूरे समूह के बाउंडिंगबॉक्स की गणना करना चाहता हूं।

क्या आप उन वस्तुओं के लिए बाउंडिंगबॉक्स की गणना को अक्षम कर सकते हैं?

0
Fluqz 27 फरवरी 2019, 19:35

2 जवाब

सबसे बढ़िया उत्तर

जैसा कि मुगेन ने उल्लेख किया है कि यह बॉक्स से बाहर करना संभव नहीं है, लेकिन आप इसे मैन्युअल रूप से पेड़ को पार करके प्राप्त कर सकते हैं।

आप यह कैसे कर सकते हैं, इसके लिए यहां एक विचार दिया गया है।

var box = null;

group.traverse(c => {

    // logic for whether or not to include the child
    var includeChild = c.isMesh;
    if (includeChild) {

        // initialize the box to the first valid child found
        // otherwise expand the bounds
        if (box === null) {

            box = new THREE.Box3();
            box.setFromObject(c);

        } else {

            box.expandByObject(c);

        }

    }

});

आप यह निर्धारित करने के लिए includeChild के बूलियन तर्क को बदल सकते हैं कि आप किसी वस्तु को सीमा गणना में शामिल करना चाहते हैं या नहीं।

उम्मीद है की वो मदद करदे!

1
Garrett Johnson 27 फरवरी 2019, 21:44

क्या आप उन वस्तुओं के लिए बाउंडिंगबॉक्स की गणना को अक्षम कर सकते हैं?

यदि आप Box3.setFromObject() का उपयोग कर रहे हैं तो नहीं, यह संभव नहीं है। कोड पदानुक्रम के सभी बच्चों को संसाधित करता है और AABB का विस्तार करता है यदि किसी वस्तु में ज्यामिति गुण है।

three.js R101

2
Mugen87 27 फरवरी 2019, 20:55