بالنظر إلى الخريطة العادية في الفضاء العالمي ما هي خوارزمية مناسبة للعثور على الحواف؟

StackOverflow https://stackoverflow.com/questions/1467177

  •  13-09-2019
  •  | 
  •  

سؤال

إذا كانت لدي Vertex Normals بمشهد طبيعي تظهر لأن الألوان في نسيج في الفضاء العالمي هل هناك طريقة لحساب الحواف بكفاءة أم أنها مستحيلة رياضيا؟ أعلم أنه من الممكن حساب الحواف إذا كان لديك حالات طبيعية في عرض المساحة، لكنني لست متأكدا مما إذا كان من الممكن القيام بذلك إذا كان لديك طبيعي في الفضاء العالمي (أحاول معرفة طريقة للماضي ساعة..)

أنا أستخدم DirectX مع HLSL.

هل كانت مفيدة؟

المحلول

أفترض أنك تحاول صنع حواف أسلوب الكرتون لمظل الخلية؟

إذا كان الأمر كذلك، فما عليك سوى جعل منتج نقطة من المساحة العالمية العادية مع موقف البكسل في الفضاء العالمي ناقص موقع الكاميرا. طالما أن المعاملات الخاصة بك كلها في نفس المساحة يجب أن تكون على ما يرام.

float edgy = dot(world_space_normal, pixel_world_pos - camera_world_pos);

لو edgy بالقرب من 0، إنها حافة.

إذا كنت ترغب في وجود حافة بحجم مساحة الشاشة، فستحتاج إلى تقديم معلومات معرف كائن إضافية على سطح آخر ونشر الاختلافات في سطح اللون.

نصائح أخرى

if ( normalA dot normalB > cos( maxAngleDiff ) 

ثم لديك حافة. لن تكون مثالية ولكن بالتأكيد سوف تجد الحواف التي لن تكون الطرق الأخرى.

أو أنا أسيء فهم المشكلة؟

تحرير: ماذا عن، ببساطة، تصفية عالية جدا تصفية الصورة؟

سوف يعتمد على عدد الألوان التي تحتوي عليها صورتك، وكيف يتم دمجها: حواف حادة، دونغ، المخلوطة، ...
نظرا لأنك تقول إن لديك Vertex Normals، أفترض أنه يمكنك الوصول إلى معلومات الألوان على متن طائرة واحدة.
لقد استخدمت تقنيين نجاحا مختلفا:

  1. لقد بحثت في صورة المناطق المحلية من نفس اللون (RGB) ثم استخدمت أعلى مستوى R أو G أو B للعثور على "الحافة" - أي حيث لم تعد R أو G أو B أعلى قيمة؛
  2. الطريقة الثانية التي استخدمتها هي تقليل الصورة إلى 16 لونا داخليا، ومن السهل العثور على الخطوط العريضة في هذه الحالة.

وبالتالي، فإن بناء ناقلات ستعتمد بعد ذلك على مدى غرامة أن تكون حبيبتك من الصور الخاصة بك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top