Show HN: ब्राउज़र में 3D पौधा सिमुलेशन
(plant.max-richter.dev)- Plantarium ब्राउज़र में 3D पौधों को nodes के रूप में assemble करने का एक सिस्टम है, और पूरा पौधा बनाने के लिए एक output node की ज़रूरत होती है
- पौधे का बुनियादी ढांचा Stem node बनाता है, और
origin,height,thiccness,minThiccness,amountinputs से तने की position, height, thickness और quantity को समायोजित किया जाता है - values की पुनरावृत्ति और variation का काम Vec3 और Parameter nodes करते हैं, जो default values में random बदलाव जोड़कर पौधे को कम uniform दिखाते हैं
- shape में बदलाव Rotate, Gravity, Noise nodes से नियंत्रित होता है, जिनमें rotation axis और angle, gravity mode, noise size और strength input के रूप में दिए जाते हैं
- पत्तियाँ Leaf, Shape, Instance nodes से बनाई जाती हैं और तने या शाखाओं के साथ रखी जाती हैं; इनमें size, range, quantity, rotation और depth conditions तय की जा सकती हैं
नोड ग्राफ का अंतिम आउटपुट
- हर node system को अंतिम परिणाम बनाने के लिए एक
outputnode चाहिए outputplantinput लेकर पूरे पौधे का परिणाम बनाता है
तना बनाना और position नियंत्रण
- Stem node पौधे का मूल तना बनाता है
_origin_: वह position जहाँ तना रखा जाता है; यहाँvec3node जोड़ा जा सकता हैheight: तने की ऊँचाईthiccness: तने की मोटाईminThiccness: न्यूनतम मोटाई_amount_: instantiate किए जाने वाले तनों की संख्या
- Vec3 node
x,y,zvalues आउटपुट करता है- तनों को फैलाकर रखने के लिए
randomयाparameternode जोड़ा जा सकता है
- तनों को फैलाकर रखने के लिए
value variation और randomness
- Parameter node default value पर निश्चित random variation लागू करके value आउटपुट करता है
_value_: base value जिस पर variation लागू होगा_variation_: base value पर लागू होने वाली variation की मात्रा
- तना, rotation, gravity, curve, slider values आदि कई inputs में
Parameterबार-बार इस्तेमाल होता है
rotation, gravity, noise से shape बदलना
- Rotate node पौधे को तय axis और angle के अनुसार घुमाता है
input: जिस पर rotation लागू होगा_axis_: rotation axis_aroundOrigin_:0,0,0के आधार पर rotate करना है या नहींsmooth: smooth rotation से जुड़ा input_spread_: कई objects जुड़े हों तो उन्हें एक साथ rotate करना है या फैलाकर rotate करना है, यह तय करता है_angle_: rotation angle
- Gravity node शाखाओं और तनों पर सरल gravity लागू करता है
input: जिस पर gravity लागू होगीcurviness: मुड़ने की मात्रा_type_: gravity calculation method; अभी केवलsimpleऔरtestकाम करते हैंstrength: gravity की ताकत
- Noise node input शाखाओं पर noise लागू करता है
plant: input पौधाsize: noise का आकारstrength: noise की ताकत
पत्तियाँ बनाना और तनों पर रखना
- Leaf node पत्ती का model बनाता है, और
Instancenode से उसे तने के साथ instantiate किया जा सकता है_shape_: हर पत्ती का shape; यहाँshapenode जोड़ा जा सकता है_curvature_: पत्ती की x/y दिशा की curvature; यहाँvec2node जोड़ा जा सकता है
- Shape node एक single shape आउटपुट करता है जिसे
Leafnode से जोड़ा जा सकता है - Instance node input model को तने या शाखा के साथ रखता है
input: placement के लिए आधार inputmodel: रखा जाने वाला modelalignRotation: rotation alignmentalternateRotation: alternate rotation_size_: हर पत्ती का आकार_instanceRange_: वह range जहाँ instances रखे जाएँगे_amount_: रखी जाने वाली पत्तियों की संख्याrotation: rotation valueoffsetBySize: size के अनुसार offset_depth_: यह तय करता है कि कितनी branch layers पर पत्तियाँ रखी जाएँ
- Alpha में
min,maxvalues होती हैं
1 टिप्पणियां
Hacker News की राय
कई मायनों में वाकई उपयोगी और शानदार
ब्राउज़र-आधारित node graph editor अच्छी तरह बनाया गया है, procedural 3D mesh बना सकता है, .obj export भी करता है, और license भी उदार है, इसलिए यह कई तरह के procedural tools का बीज बन सकता है
इस tool से आज़माने लायक बहुत से ideas हैं, और शायद मैं इसी विषय पर अपनी bachelor's thesis लिखूंगा
complexity प्रभावशाली है
जो लोग जल्दी से इसे छूकर देखना चाहते हैं, उनके लिए tutorial भी अच्छा है, लेकिन मज़ेदार हिस्से तक पहुंचने में कुछ मिनट लगते हैं, इसलिए दाएं panel के sliders adjust करके देखना बेहतर है कि fern कैसे बदलता है
साथ ही library दबाकर दूसरे models load करें तो तुरंत अंदाज़ा हो जाता है कि इससे क्या किया जा सकता है
user-submitted models में अभी तक कोई prank model नहीं दिखता, इससे लगता है कि project सच में अभी-अभी निकला है
उम्मीद है यह टिके रहेगा ;)
बहुत अच्छा दिखता है, लेकिन एक छोटी समस्या है
values बदलते समय plant का shape बदलता है और camera बार-बार फिर से fit हो जाता है, जिससे ऐसा लगता है कि camera shake हो रहा है, और निजी तौर पर यह काफ़ी खटकता है
parameters बदलते समय camera को fixed रख सकें तो अच्छा होगा
camera auto-centering में debounce जोड़ना अच्छा रहेगा :)
शानदार project है, लेकिन अभी लगता है plants render नहीं हो रहे
20 मिनट पहले plants render हो रहे थे, इसलिए शायद HN traffic से असर पड़ा है
code पूरा online है और documentation भी बढ़िया है। दरअसल इस project में server backend भी है
https://github.com/jim-fx/plantarium/tree/main
https://github.com/jim-fx/plantarium/blob/main/ARCHITECTURE....
कुछ दिन बाद लौटकर तब देखूंगा जब यह काम कर रहा होगा
एक साल पहले Rust को webapp engine की तरह आज़माना चाहता था, इसलिए कुछ मिलता-जुलता बनाया था
wasm में compile करके Rust webserver पर host करने का तरीका था, और result https://blomma.lorentz.app पर है
हालांकि यह project productization के लिहाज़ से कहीं बेहतर है, और खासकर node graph editor इसकी असली ताकत है
यह workflow में अच्छी तरह घुल-मिल जाता है, इसलिए debugging tool के स्तर से आगे बढ़कर ऐसा product लगता है जिसे कोई भी इस्तेमाल कर सके
मेरी तरफ़ अगर कुछ बेहतर है, तो बस इतना कि leaf shape और stem shape दोनों के लिए Bezier curves इस्तेमाल करता हूं
topology और triangulation को सही मिलाना काफ़ी मुश्किल था, लेकिन quaternions की शुरुआत और trigonometry की revision के लिए बहुत अच्छा रहा। Bezier curve node एक बार आज़माने की सलाह दूंगा
geometry generator को Rust/Wasm में फिर से लिखना roadmap में काफ़ी गंभीरता से शामिल है
अभी Advent of Code करते हुए Rust से परिचित हो रहा हूं
बहुत शानदार! stem thiccness parameter पसंद आया :)
मुझे लगता है programmers अपने projects या खुद को कुछ ज़्यादा ही गंभीरता से लेने लगते हैं, इसलिए मैं इधर-उधर थोड़ी playfulness डालना पसंद करता हूं
सच में पसंद आया!
usability सुधार के लिए कुछ suggestions हैं
पहला, अगर mouse गलती से box से बाहर चला जाए और फिर छोड़ें, तो drag handling buggy तरीके से काम करती है। mouse-up recognize नहीं होता, इसलिए parameter mouse-down state में stuck हो जाता है
leaf editor में draw करना या sliders की तरह drag करके parameters बदलना मुश्किल हो जाता है। शायद graph node editor box के बजाय किसी common ancestor पर mouse-up event handler register करना ठीक रहेगा
दूसरा, connections drag करने वाले छोटे parameter port circular handles थोड़े छोटे हैं। खासकर जब zoom out करके पूरी scene का काफी हिस्सा देख रहे हों
graphical element को नहीं, केवल hit area को ही करीब 25% बड़ा कर दें तो usability बेहतर हो सकती है
संदर्भ के लिए, मैं Firefox इस्तेमाल कर रहा हूं। Chromium में भी mouse handler problem वैसे ही होती है, लेकिन node connection drag करना Chromium में थोड़ा ज़्यादा usable लगता है
ऐसे छोटे usability bugs के प्रति मैं खुद थोड़ा insensitive हो जाता हूं, इसलिए यह बहुत valuable है
लगता है दोनों कुछ दिनों में fix हो जाएंगे :)
जिन्हें नहीं पता था उनके लिए: दाईं panel को slide करके और parameters और controls दिखाए जा सकते हैं
शानदार
crowdsourced algorithmic plants से पूरा जंगल बनते देखने का इंतज़ार है
क्या यह किसी science project से जुड़ा है? कोई AI botanist feature भी अच्छा होगा जो बताए कि plant के survive करने की संभावना कितनी है, सबसे नज़दीकी taxonomic मानदंड क्या है, और सफेद चावल के साथ अच्छी recipe कैसी होगी
यह किसी science project से जुड़ा नहीं है, बस एक plant-loving nerd ने बनाया है
फिर भी project में gbif.org ID attach की जा सकती है, और तब gbif API के जरिए extra information load होती है :)
बेहतरीन! अगर time node भी जोड़ सकें तो basic animations भी संभव हो जाएंगी
कुल मिलाकर प्यारा project है
tricky part शायद यह होगा कि हर frame पर पूरी mesh फिर से बनाए बिना animation को कैसे integrate किया जाए
हालांकि generator से skeleton export करके उससे plant animate करना काफी आसान लगता है