بناء المدن بنقرة من الفأرة مع هوديني وبيثون



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

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

في هذه المقالة ، سأستعرض الإعدادات الأساسية لأداة City Builder في Houdini ، والتي يمكنها بناء مدن بنقرات بسيطة على الماوس. لاحظ أنه يعمل فقط داخل Houdini باستخدام Python Viewer States.

مرجع


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



الإعداد الأولي


أول شيء تفعله هو الشبكة أو الطائرة التي سيتم بناء المنازل عليها. من الناحية النظرية ، يمكن أن يكون أي شيء ، على سبيل المثال ، مثلثات ، سداسيات ، وما إلى ذلك. أسهل طريقة وجدتها هي استخدام quad mesher.

ابدأ بالعقدة الدائرية وضع عقدة شبكة فورية تحتها (إنها من أدوات Labs ، لذا تأكد من تثبيتها).



بعد ذلك ضع عقدة البثق - في وقت لاحق سيتم استخدامها لبث البدائيات المحددة بواسطة الماوس.



سيتم تصغير الإعداد في HDA ، حيث ستقوم بإنشاء معلمة للعمل مع كود Python. في هذه الحالة ، تحتاج إلى التحكم في معلمة المجموعة لتوسيع وملء الأساسيات التي ينقر عليها الماوس.



الولايات عارض Python


يمكنك الآن الانتقال إلى رمز Python. إذا كنت جديدًا على حالات المشاهد ، فقد كتبت مسبقًا مقدمة أساسية لها.

أنشئ حالة عارض جديدة وابدأ بقالب فارغ. سيؤدي هذا فقط إلى إنشاء جزء من التعليمات البرمجية المطلوبة حقًا.



هناك عدد قليل من الأشياء لإضافتها. يمكنك تقسيمها إلى قسمين:

  • الحصول على شكل هندسي للعرض بنقرات الماوس.
  • الحصول على بدائية بنقرة ماوس.

للبدء ، في الجزء init ، أضف متغيرًا جديدًا للهندسة يسمى self.geometry = بلا. ثم قم بإضافة وظيفة OnEnter - يتم استدعاء هذه الطريقة عندما يتم تنشيط الحالة من قبل المستخدم بإنشاء / تحديد العقدة والضغط على Enter في إطار العرض.

هذا هو المكان الذي يتم فيه تخزين الهندسة الحالية في الهندسة الذاتية. تم باستخدام node.geometry ().



الآن هناك اتصال مع الهندسة.

الجزء التالي هو الحصول على رقم بدائي بناءً على موضع الماوس عند النقر. للقيام بذلك ، قم بإنشاء وظيفة OnMouseEvent - هذه هي معالجة أحداث الماوس (مثل النقرات أو موضع الماوس).

في بداية حدث الماوس ، قم بإنشاء متغيرات للعمل. ثم احصل على التقاطع مع الهندسة باستخدام وظيفة GeometryIntersector واستخدام الهندسة الذاتية.

من هذا التقاطع سوف تحصل على المعلومات التي تحتاجها ، ومعرفة وطباعة رقم بدائي.



إذا تم تنفيذ كل شيء بشكل صحيح ، فسيظهر ذلك:



الإعداد الأخير هو استخدام رقم بدائي في معلمة المجموعة ، وهو ما فعلته في البداية. استبدل السلسلة بسلسلة جديدة ، واستدعي معلمة المجموعة وقم بتعيين الرقم البدائي كقيمة. لاحظ أنه يتم تحويلها أيضًا إلى سلسلة ، لأن المجموعة هي معلمة سلسلة.



سوف يتحول هذا:



هذه هي الفكرة الرئيسية التي بدأت في إنشاء أداة. من الآن فصاعدًا ، ستقوم بتخزين المعلومات ، وليس إعادة كتابتها. سيوفر هذا الإعداد أساسًا لبدء المزيد من التجارب.

التفاصيل


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

يتم نسخ جدار معياري على كل جانب من المكعب.



حد مشطوف ومكشف للأشعة فوق البنفسجية.



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

مستقبل الصك


أريد أن أذهب إلى أبعد من ذلك وأجعلها أداة لإنشاء المستويات. الفكرة هي أنه يمكنك إنشاء نموذج أولي للمستويات النهائية بسرعة ببضع نقرات. استلهمت من الفرن .



أخيرًا ، عرض توضيحي صغير لما حصلت عليه الآن:


All Articles