दिलचस्प पोस्ट
एंड्रॉइड में पाठ दृश्य के साथ आप उल्टा पाठ कैसे दिखा सकते हैं? ओएस एक्स फ्रेमवर्क लाइब्रेरी लोड नहीं हुई: 'इमेज नहीं मिली' वसंत के बीच अंतर @ नियंत्रक और @ आरक्षित नियंत्रक एनोटेशन जावा का उपयोग कर डिफ़ॉल्ट वेबब्रोवर खोलने का तरीका Gitmodules में Git submodules आरंभ नहीं किए गए OpenCV / Python में कैमरा पैरामीटर सेट करना विकिपीडिया से इन्फोबॉक्स डेटा कैसे प्राप्त करें? Xcode 6 अजीब बग: इंटरफ़ेस बिल्डर फ़ाइल में अज्ञात वर्ग पायथन में हर x सेकंड को बार-बार एक फ़ंक्शन निष्पादित करने का सबसे अच्छा तरीका क्या है? मैं एक विधि कैसे वापस कर सकता हूँ एक तर्क है कि इसे पारित किया गया था? एसक्यूएल DATE से केवल महीना और वर्ष प्राप्त करना नामकरण कन्वेंशन सी # mongodb अद्यतन में एक चर का उपयोग कर जावास्क्रिप्ट बिना स्ट्रैटेबल के अंदर स्ट्रैटेबल – जैसे PHP Web.xml में url- पैटर्न क्या है और सबलेट को कॉन्फ़िगर कैसे करें

तीन। जेएस – ऑर्थोग्राफिक कैमरा

मैंने एक एप पर काम किया है जो कुछ 3 डी मॉडल दिखाता है। हम मॉडल लोड, meshes बनाने, उन्हें दृश्य में जोड़ें … मानक प्रक्रिया अंतिम जाल को जोड़ा जाने के बाद, हम कैमरे को स्थानांतरित करने के लिए बाउंडिंग बॉक्स की गणना करते हैं और गणित करने के लिए कुल ज्यामिति के आकार और व्यूपोर्ट के आकार का उपयोग करते हुए सभी दृश्य को कवर करते हैं।

if (bounds.bx / bounds.by < camera.aspect) { /* Vertical max */ r = bounds.by / (2 * Math.tan(Math.PI / 8)); } else { /* Horizontal max */ hFOV = 2 * Math.atan(Math.tan(Math.PI / 8) * camera.aspect); r = bounds.bx / (2 * Math.tan((hFOV / 2))); } 

bounds एक बाउंडिंग बॉक्स की चौड़ाई और ऊंचाई वाली वस्तु है। इस गणना के बाद, हम कैमरे को ले जाते हैं (और थोड़ा अनुपात, सिर्फ सौंदर्यशास्त्र, हम ज्यामिति और स्क्रीन सीमा के बीच एक छोटे से कमरे चाहते हैं :)) और रेंडर करें

  camera.position.z = r * 1.05; 

अब तक यह लागू किया गया है और ठीक से चलाता है। यह परिप्रेक्ष्य कैमरे के साथ किया गया है अब हम इसे बदलना चाहते हैं और ऑर्थोग्राफिक कैमरा का उपयोग करते हैं … एक गड़बड़ हो जाती है मॉडल बहुत छोटा हैं, हम ट्रैकबल नियंत्रणों से मूसीव्हील ज़ूम खो देते हैं और कैमरे को स्थानांतरित करने के लिए एल्गोरिदम अब और काम नहीं कर रहे हैं। इसके अलावा मैं कैमरे के लिए निर्माता के मापदंडों को नहीं समझता … ये चौड़ाई और ऊंचाई ज्यामिति या व्यूपोर्ट के लिए हैं?

वेब के समाधान से एकत्रित समाधान "तीन। जेएस – ऑर्थोग्राफिक कैमरा"

तीन। जेएस में एक ऑर्थोग्राफिक कैमरे को तत्काल बनाने के लिए पैटर्न है:

 var camera = new THREE.OrthographicCamera( width / - 2, width / 2, height / 2, height / - 2, near, far ); 

जहां width और height विश्व-अंतरिक्ष इकाइयों में मापा गया कैमरा के घनत्व के आकार का निराशा की चौड़ाई और ऊंचाई है।

near और far हताशा के पास और दूर के विमानों के लिए विश्व अंतरिक्ष की दूरी है। near और far दोनों शून्य से अधिक होना चाहिए।

विरूपण को रोकने के लिए, आप आमतौर पर रेंडर के कैनवास के पहलू अनुपात को मैच करने के लिए ऑर्थोग्राफिक कैमरे के पहलू अनुपात ( width / height ) चाहते हैं। (नीचे दिए गए नोट देखें)

यह दुर्भाग्यपूर्ण है कि तीन। Js उदाहरणों में से कई खिड़की पास करते हैं। window.innerWidth और window.innerHeight । इस निर्माता के लिए window.innerHeight रूप में window.innerHeight । ऐसा करने से ऐसा ही समझ में आता है, यदि किसी रचना के लिए रोधी कैमरा का उपयोग किया जाता है, या यदि आपके ऑर्थोग्राफिक दृश्य के लिए दुनिया की इकाइयां पिक्सल में हैं


* नोट: वास्तव में, कैमरा पहलू अनुपात रेंडरर व्यूपोर्ट के पहलू अनुपात से मेल खाना चाहिए। व्यूपोर्ट कैनवास का उप-क्षेत्र हो सकता है। यदि आप रेंडरर के व्यूपोर्ट को सीधे renderer.setViewport() का प्रयोग नहीं करते हैं, तो व्यूपोर्ट कैनवास के समान आकार होगा, और इसलिए कैनवास के समान पहलू अनुपात है।

three.js r.73

  camera.top = (.95*camera.top); camera.bottom = (.95*camera.bottom); camera.left = (.95*camera.left); camera.right = (.95*camera.right); 

भविष्य के संदर्भ के लिए: अच्छा 5 मिनट का वीडियो

 var w = container.clientWidth; var h = container.clientHeight; var viewSize = h; var aspectRatio = w / h; _viewport = { viewSize: viewSize, aspectRatio: aspectRatio, left: (-aspectRatio * viewSize) / 2, right: (aspectRatio * viewSize) / 2, top: viewSize / 2, bottom: -viewSize / 2, near: -100, far: 100 } _camera = new THREE.OrthographicCamera ( _viewport.left, _viewport.right, _viewport.top, _viewport.bottom, _viewport.near, _viewport.far );