2015-07-01 12 views
5

में वेक्टर में रूपांतरण मैट्रिक्स को कैसे लागू करें, क्या मुझे यहां कुछ याद आ रही है? विभिन्न वेक्टर/मैट्रिक्स फ़ंक्शन here में, मैं किसी SCNMatrix4 को SCNVector4 में बदलने के लिए बस कोई फ़ंक्शन नहीं देख सकता। मैं निश्चित रूप से मैट्रिक्स/वेक्टर गुणा लम्बे समय से लिखकर ऐसा कर सकता हूं, लेकिन निश्चित रूप से इसकी आवश्यकता नहीं हो सकती है?SceneKit

इसका कारण यह है कि मैं कैमरे के लिए दो चरणों में प्रोजेक्शन ट्रांसफॉर्म अपडेट कर रहा हूं। सबसे पहले मुझे मूल ट्रांसफॉर्म में एक ट्रांसफॉर्म लागू करने की आवश्यकता है, फिर मुझे संख्या को काम करने के लिए इस ट्रांसफॉर्म को वेक्टर में लागू करने की आवश्यकता है, फिर उस नंबर के आधार पर मुझे शीर्ष पर एक और रूपांतरण लागू करने की आवश्यकता है।

चूंकि ऐसा लगता है कि कॉलप्रोजेक्शन ट्रान्सफॉर्म को कॉल करने का कोई तत्काल प्रभाव नहीं है (मुझे लगता है कि वर्तमान लेनदेन होने पर ऐसा होता है), मैं प्रोजेक्टपॉइंट को अपने मध्यवर्ती राज्य में परिवर्तन लागू करने के लिए कॉल नहीं कर सकता। इसलिए मैं रूपांतरण मैट्रिक्स बनाने और इसे मैन्युअल रूप से लागू करने के लिए देख रहा हूं।

निश्चित रूप से यहां एक ऐसी सबसे बुनियादी चीज करने के लिए एक फ़ंक्शन होना चाहिए जो आप कभी भी मैट्रिक्स और वेक्टर के साथ करना चाहते हैं ???

उत्तर

4

ऐसा लगता है कि ऐप्पल के पास अभी तक अपने गेम किट प्रकारों को सिम पर बदलने का समय नहीं है, लेकिन क्योंकि वे जानते हैं कि वे करेंगे, उन्होंने दृश्य किट से बाहर की अपेक्षा की पेशकश नहीं की है। अभी के लिए, मुझे विश्वास है कि हमारे लिए प्रारंभिक बातों के भंडार पर काम करना सही है। सभी काम सिम प्रकार के साथ किया जाएगा; जब आवश्यक हो तो रूपांतरण होगा।

extension float4x4 { 
    init(_ matrix: SCNMatrix4) { 
     self.init([ 
      float4(matrix.m11, matrix.m12, matrix.m13, matrix.m14), 
      float4(matrix.m21, matrix.m22, matrix.m23, matrix.m24), 
      float4(matrix.m31, matrix.m32, matrix.m33, matrix.m34), 
      float4(matrix.m41, matrix.m42, matrix.m43, matrix.m44) 
     ]) 
    } 
} 

extension float4 { 
    init(_ vector: SCNVector4) { 
     self.init(vector.x, vector.y, vector.z, vector.w) 
    } 
} 

extension SCNVector4 { 
    init(_ vector: float4) { 
     self.init(x: vector.x, y: vector.y, z: vector.z, w: vector.w) 
    } 
} 
+0

दिलचस्प है, धन्यवाद - मैं आज सुबह – Tom

+2

क्षमा याचना में बाहर की कोशिश करेंगे, मैं इसे बाहर प्रयास नहीं किया है के रूप में मैं अपने समस्या यह है कि आव्यूह गुणन पूरी तरह बचना हल करने के लिए एक अलग रास्ता मिल गया। हालांकि, मैंने यह जवाब स्वीकार कर लिया है क्योंकि मुझे कोई कारण नहीं दिख रहा है जो यह काम नहीं करेगा, और यह सुविधाजनक और तेज़ दिखता है। – Tom

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