दिलचस्प पोस्ट
सी # में बूल और बूलियन प्रकारों के बीच अंतर क्या है Constexpr के साथ तालिका देखें जावा प्रोजेक्ट्स के लिए बिल्ड और वर्जन नंबरिंग (चींटी, सीवीएस, हडसन) एक्स में अंतर क्या है: संदर्भ और तत्व नाम? INotifyPropertyChanged प्रॉपर्टी नाम – हार्डकोड बनाम प्रतिबिंब? सी # में मार्शल "चार *" Https://chrome.google.com/webstore/ पर क्रोम एक्सटेंशन सामग्री स्क्रिप्ट क्या कोई प्लेटफार्म है जहां विभिन्न प्रकार के संकेत दिए गए हैं? Angular.js में "चीज़ों" को दूसरों में इंजेक्ट किया जा सकता है? रिमोट फाइल को अधिलेखित करने के लिए "git push" बल मैं gwt संकलक को कैसे गति कर सकता हूं? regex और javascript का उपयोग करते हुए html में शब्द हाइलाइट करें – लगभग वहां जावास्क्रिप्ट में नामित पैरामीटर एसटीएल सॉर्ट फ़ंक्शन का उपयोग करके सॉर्ट करें मैं जार के अंदर एक कॉन्फ़िग फाइल कैसे प्राप्त करूं?

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

मैंने एक एप पर काम किया है जो कुछ 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; 

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

Solutions Collecting From Web of "तीन। जेएस – ऑर्थोग्राफिक कैमरा"

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

 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 );