2013-05-29 8 views
5

के बाद मानकों को कैसे फ़्लिप करें मैंने क्लोन किया है और ऋणात्मक पैमाने का उपयोग करके ऑब्जेक्ट फ़्लिप किया है, जिससे मेरे एकल पक्षीय चेहरे उलटा हो जाते हैं। मेरा सवाल है, मैं आदर्शों को कैसे फ़्लिप कर सकता हूं?थ्री.जेएस: ऋणात्मक पैमाने

मैं सामग्री का उपयोग नहीं करना चाहता हूं। तीन = दोहरी तरफ, कारणों से: 1) ठीक से काम नहीं किया (कुछ रंगों को अंदर से खींचा जाता है) और 2) जितना संभव हो उतना प्रदर्शन करना चाहते हैं। तो डबलसाइड मेरे लिए एक विकल्प नहीं है।

यह बताता है कि मेरी ऑब्जेक्ट फ़्लिप होने पर कैसे।

mesh.scale.x = - scale_width; 

अग्रिम धन्यवाद!

+0

मैंने इस प्रश्न का आपका जवाब भी पढ़ा और मैंने सोचा कि मुझे नकारात्मक स्केलिंग की तुलना में मेरी ऑब्जेक्ट्स को "फ़्लिप" करने के लिए अन्य विकल्प क्या है? हो सकता है कि आप मुझे नकारात्मक स्केलिंग से बेहतर समाधान की सलाह दे सकें? मेरा काम एक सममित वस्तु का निर्माण करना है: आभासी कला गैलरी के लिए एक छवि के लिए एक फ्रेम। तो मेरे पास एक फ्रेम पक्ष की ज्यामिति है, वे अपने रूप में भी भिन्न हो सकते हैं। प्रत्येक फ्रेम पक्ष में दो 45 डिग्री कोनों, गोल या तेज, जो भी हो। इसलिए मैं एक कोने बना देता हूं और इसे पूरी तरह से स्केल करता हूं, एक पूर्ण फ्लिप प्राप्त करने के लिए। किसी भी सुझाव को नकारात्मक पैमाने के बिना कैसे संभालना है? –

उत्तर

5

मैं, कारणों की एक पूरी मेजबान के लिए नकारात्मक पैमाने के खिलाफ सलाह के रूप में इस लिंक में विस्तार से बताया जाएगा: Transforming vertex normals in three.js

इसके बजाय आप की तरह तो

geometry.scale(- 1, 1, 1); 

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

आप मैन्युअल रूप से अपनी ज्यामिति को पार कर सकते हैं और प्रत्येक चेहरे के घुमावदार क्रम को फ़्लिप कर सकते हैं। यह आपके लिए काम कर सकता है - यदि आपके पास एक बनावट लागू नहीं है और यूवी का उपयोग नहीं कर रहा है। यदि आपकी ज्यामिति बनायी जानी है, तो यूवी को भी ठीक करने की आवश्यकता होगी।

दरअसल, एक ज्यामिति उलटा उपयोगिता तीन.जेएस के लिए एक अच्छा जोड़ा होगा। वर्तमान में, आप जो करना चाहते हैं वह लाइब्रेरी द्वारा समर्थित नहीं है।

Three.js r.72

+0

स्पष्टीकरण के लिए धन्यवाद, इसलिए इस सुविधा को लागू करने के बारे में सोचने के लिए प्रोत्साहित करना :) –

3

यह सवाल दो साल पुराना है, लेकिन इस मामले में किसी के द्वारा गुजरता है।

आप "गंदे कोने/normals" मोड में प्रवेश कर सकते हैं और मैन्युअल normals फ्लिप:: यहाँ ऐसा करने का एक गैर विनाशकारी तरीका है

mesh.geometry.dynamic = true 
mesh.geometry.__dirtyVertices = true; 
mesh.geometry.__dirtyNormals = true; 

mesh.flipSided = true; 

//flip every vertex normal in mesh by multiplying normal by -1 
for(var i = 0; i<mesh.geometry.faces.length; i++) { 
    mesh.geometry.faces[i].normal.x = -1*mesh.geometry.faces[i].normal.x; 
    mesh.geometry.faces[i].normal.y = -1*mesh.geometry.faces[i].normal.y; 
    mesh.geometry.faces[i].normal.z = -1*mesh.geometry.faces[i].normal.z; 
} 

mesh.geometry.computeVertexNormals(); 
mesh.geometry.computeFaceNormals(); 

+1 @WestLangley, मैं सुझाव है कि आप कभी नहीं का उपयोग करें नकारात्मक पैमाने

+0

दिलचस्प। लेकिन ध्यान दें कि .flipSided अब THREE.js का हिस्सा नहीं है। यू/वेस्टलैंगली यहां देखें: http://stackoverflow.com/questions/19673913/three-js-flipsided-property। – steveOw

+0

ज्यामिति .__ dirtyVertices और ज्यामिति .__ गंदे नॉर्मल्स भी बहिष्कृत हैं। Https://github.com/mrdoob/three.js/wiki/Updates देखें – Reimund

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