எந்தவொரு வெளிப்புற வளர்ச்சி சூழலும் தேவை இல்லாமல், தனிப்பயன் தொகுதியை உருவாக்குவதற்கான அடிப்படைகள்மூலம் இந்தப் பயிற்சி உங்களுக்கு வழிகாட்டும்.
கதிர் ஒளியியல் உருவகப்படுத்துதலின் "தொகுதி" நற்பொருத்தம் தனிப்பயன் அளவுருக்கள், தனிப்பயன் கட்டுப்பாட்டு புள்ளிகள் மற்றும் பொருள்களின் வரிசைகள் கொண்ட பொருள்களின் மட்டு சேர்க்கைகளை உருவாக்க அனுமதிக்கிறது. இந்த நற்பொருத்தம் புதிய கருவிகளை உருவாக்க ஏற்கனவே உள்ள கருவிகளால் உருவாக்கப்பட்ட பொருட்களை ஒன்றிணைப்பதன் மூலமும், தனித்துவம் பெறுவதன் மூலமும் அல்லது மறுசீரமைப்பதன் மூலமும் இந்தச் பாவனையாக்கியின் திறனை விரிவுபடுத்துகிறது. எடுத்துக்காட்டாக, CircleSource
தொகுதி (கருவிகள் -> பிற -> இறக்குமதி தொகுதி பார்க்கவும்) தற்போதுள்ள" புள்ளி மூல (<360 °) "கருவியால் உருவாக்கப்பட்ட புள்ளி மூலங்களின் வரிசையை ஒருங்கிணைக்கிறது, ஒரு வட்டத்துடன்," வட்ட மூலத்தை "உருவாக்கப் பாவனையாக்கியில் இல்லாத கருவி. FresnelLens
தொகுதி" கண்ணாடி-> தனிப்பயன் சமன்பாடு "கருவியைத் தனித்துவம் பெற்றது, இதனால் சமன்பாடு துண்டுகளின் எண்ணிக்கையால் அளவுருவாக்கப்பட்ட ஃப்ரெச்னல் வில்லையின் ஒரு குறிப்பிட்ட வளைவைக் குறிக்கிறது, இதனால் ஒரு சிறப்பு "ஃப்ரெச்னல் வில்லை" கருவியை உருவாக்குகிறது, இதுவும் முன்பு இல்லை. புதிய கருவிகளை உருவாக்குவதோடு மட்டுமல்லாமல், இந்த நற்பொருத்தம் சில ஒளியியல் ஆர்ப்பாட்டங்களை மேலும் ஊடாடும். எடுத்துக்காட்டாக, BeamExpander
தொகுதியின் மூன்றாவது கட்டுப்பாட்டு புள்ளியை இழுப்பதன் மூலம், இரண்டு லென்ச்கள் இரண்டு வில்லைகள் அகலத்தின் பொதுவான குவிய புள்ளியின் நிலை எவ்வாறு பாதிக்கிறது என்பதை ஒருவர் நேரடியாகக் காணலாம், இரண்டு வில்லைகளின் குவிய நீளங்களை தனித்தனியாகச் சரிசெய்ய தேவையில்லை.
எல்லா தனிப்பயன் கட்டுப்பாட்டு புள்ளிகளுக்கும் ஒரு தொகுதி தேவையில்லை என்பதை நினைவில் கொள்க. சில எளிய நிகழ்வுகளை "கைப்பிடி" அம்சத்தால் அடைய முடியும் (பாவனையாக்கியின் கீழ் வலது மூலையில் உள்ள உதவி பாப்அப்பில் "குழு, சுழற்சி மற்றும் அளவிலான பொருள்கள்" பகுதியைப் பார்க்கவும்). ஒரு கைப்பிடியை உருவாக்குவதை விட ஒரு தொகுதியை உருவாக்குவது மிகவும் சிக்கலானது என்பதால், ஒரு தொகுதியை உருவாக்குவதைக் கருத்தில் கொள்வதற்கு முன்பு உங்கள் வழக்கை "கைப்பிடி" அம்சத்தால் அடைய முடியுமா என்பதை முதலில் சரிபார்க்க வேண்டும். ஒரு தொகுதியைப் பயன்படுத்தாமல் தனிப்பயன் கட்டுப்பாட்டு புள்ளியின் (இரண்டு பிளாச்டிக் பைகளை நீரிலிருந்து இரண்டு பிளாச்டிக் பைகளை நகர்த்துவது) ஒரு கீழான எடுத்துக்காட்டுக்கு இங்கே ஐப் பார்க்கவும்.
மறுபுறம், உங்கள் வழக்குக்கு சிக்கலான நிரலாக்க தேவைப்பட்டால் (அனிமேசன்களை உருவாக்குவது, ஆப்டிகல் கூறுகளை வைக்க சிக்கலான வழிமுறையைப் பயன்படுத்துதல் அல்லது கதிர்வீச்சு வரைபடங்களில் பகுப்பாய்வு செய்வது போன்றவை), தயவுசெய்து [ஒருங்கிணைப்பு கருவிகள்] (/ஒருங்கிணைப்புகள்) மற்றும் பைத்தான் அல்லது சூலியா போன்ற ச்கிரிப்ட்களை எழுதுங்கள்.
You are welcome to contribute your modules to the "Import modules" list as long as you think it is useful for others, even if it is vibe coded!
சாட்சிப்டில் உள்ள [ரே ஒளியியல் கோடர்] (/AI-TOOLS/SATGPT) ரே ஒளியியல் தொகுதிகள் எழுத உதவும். இது உங்கள் விளக்கத்தின் அடிப்படையில் தொகுதியைக் கொண்ட காட்சிக்கான சாதொபொகு குறியீட்டை உருவாக்குகிறது, மேலும் நீங்கள் குறியீட்டை சாதொபொகு எடிட்டருக்கு நகலெடுக்கலாம் (கீழே காண்க). ஏற்கனவே உள்ள தொகுதிகளைத் திருத்த அல்லது காட்சிகளை மாற்றியமைக்க இதைப் பயன்படுத்தலாம்.
சாட்போட் உருவாக்கிய குறியீடு நேரடியாக வேலை செய்யாது. பிழை ஏற்பட்டால், பிழை செய்தியை சாட்போட்டிற்கு நகலெடுத்து ஒட்டுவது உதவக்கூடும். மிகவும் சிக்கலான தொகுதிகளுக்கு, நீங்கள் இன்னும் கீழேயுள்ள டுடோரியலைப் படித்து, குறைந்தபட்சம் நீங்களே குறியீட்டை எழுத விரும்பலாம்.
சாட்போட்டிற்கான அறிவுறுத்தல் மற்றும் அறிவு கோப்புகள் [இங்கே] (/AI-கருவிகள்/வழிமுறைகள்) கிடைக்கின்றன. நீங்கள் மற்றொரு எல்.எல்.எம் சேவையை விரும்பினால், ரே ஒளியியல் தொகுதிகளை எவ்வாறு எழுதுவது என்பதை கற்பிக்க அந்தக் கோப்புகளை வழங்கலாம்.
இந்தப் பயன்பாட்டில் தற்போது தொகுதிகள் உருவாக்குவதற்கான காட்சி இடைமுகம் இல்லை, எனவே நீங்கள் காட்சியின் சாதொபொகு ஐ நேரடியாகத் திருத்த வேண்டும்.
பயன்பாட்டின் மேல்-வலது மூலையில் உள்ள "அமைப்புகள்" கீழ்தோன்றலைக் சொடுக்கு செய்வதன் மூலம் உள்ளமைக்கப்பட்ட சாதொபொகு திருத்தியை நீங்கள் இயக்கலாம், பின்னர் "சாதொபொகு திருத்தியை காட்டு" ஐ சரிபார்க்கவும். குறியீடு திருத்திப் பயன்பாட்டின் இடது புறத்தில், தற்போதைய காட்சியின் சாதொபொகு குறியீட்டைக் கொண்டு தோன்ற வேண்டும். கைபேசி சாதனங்களில் இந்த நற்பொருத்தம் சரியாக வேலை செய்யாது என்பதால், உங்களிடம் போதுமான பெரிய திரை இருப்பதை உறுதிப்படுத்திக் கொள்ளுங்கள்.
வழக்கமான காட்சி காண் திருத்திப் பயன்படுத்தி நீங்கள் காட்சியைத் திருத்தும்போது, சாதொபொகு திருத்தியில் உள்ள குறியீடு அதற்கேற்ப புதுப்பிக்கப்படும், மாற்றப்பட்ட பகுதி சிறப்பம்சமாக இருக்கும். மாறாக, சாதொபொகு திருத்தியில் குறியீட்டை நேரடியாகத் திருத்துவது அதற்கேற்ப காட்சியைப் புதுப்பிக்கும். உங்களுக்குச் சாதொபொகு அல்லது எந்த வகையான உரை அடிப்படையிலான தரவு வடிவமும் தெரிந்திருக்கவில்லை என்றால், நீங்கள் அதைச் சிறிது நேரம் விளையாட விரும்பலாம்.
குறிப்பாக, நீங்கள் காட்சியில் ஒரு பொருளைச் சேர்க்கும்போது, அது objs
வரிசையில் சேர்க்கப்படுகிறது. அதன் சில பண்புகளை நீங்கள் தாக்கல் செய்யாத மதிப்புக்கு மாற்றினால், அவை அந்தப் பொருளின் திறவுகோல்-மதிப்பு இணைகளாகத் தோன்றும்.
If you do not want the scene to be automatically updated when you edit the JSON, you can enable Settings -> Show simulator controls and disable "Auto Refresh". And when the editing is done, click "Refresh Simulation" (or "Refresh Scene" if you don't want the simulation to be rerun immediately).
முக்கியமானது: இந்தப் பயிற்சி பக்கத்தில், கீழேயுள்ள இசட்டங்களில் சாதொபொகு குறியீடு திருத்தியை நீங்கள் காணவில்லை என்றால், தயவுசெய்து அதை இயக்கி இந்தப் பக்கத்தை மீண்டும் ஏற்றவும், ஏனெனில் அது எவ்வாறு செயல்படுகிறது என்பதைப் புரிந்துகொள்ளக் குறியீட்டை நீங்கள் காண வேண்டும்.
ஒரு தொகுதியின் எங்கள் முதல் உதாரணத்தைப் பார்க்கட்டும்.
நீங்கள் நான்கு வரிகள் நூல்களைக் காண வேண்டும். சாதொபொகு திருத்தியைப் பார்ப்பதன் மூலம், முதல் இரண்டு நேரடியாக மேல்-நிலை objs
வரிசையில் வழக்கம்போல் இருப்பதை நீங்கள் காண்பீர்கள், ஆனால் கடைசி இரண்டு வரிகள் modules.ExampleModule.objs
இதில் காண்பீர்கள்.
modules
என்பது ஒரு அகராதியாகும், அங்கு முக்கியமானது தொகுதியின் பெயர் (இந்த விசயத்தில்ExampleModule
), மற்றும் மதிப்பு அந்தத் தொகுதியின் வரையறை. அந்தத் தொகுதிக்குள் உள்ள (வார்ப்புரு) பொருள்களைக் குறிப்பாக, modules.ExampleModule.objs
வரிசை விவரிக்கிறது, இது காட்சியில் உள்ள பொருள்களை விவரிக்கும் உயர்மட்ட objs
இலிருந்து வேறுபட்டது.
தொகுதிக்குள் பொருள்களைக் காட்சிக்கு வைக்க, எங்களுக்கு ஒரு "தொகுதி பொருள்" தேவை objs
வரிசையில், இதுobjs[2]
இந்த எடுத்துக்காட்டில், அதன் வகை Modelobj
மற்றும் அதனுடையmodule
பண்பு என்பது தொகுதியின் பெயர்.
modules
அகராதியில் உள்ள தொகுதி வரையறை காட்சி காண் திருத்தியால் திருத்தப்படவில்லை. எனவே இந்த எடுத்துக்காட்டில் உள்ள கடைசி இரண்டு நூல்களில் ஏதேனும் ஒன்றை நீங்கள் சொடுக்கு செய்யும்போது, நீங்கள் தொகுதி பொருளைத் தேர்ந்தெடுப்பீர்கள், ஆனால் தொகுதியில் உள்ள பொருள்கள் அல்ல. இந்த எடுத்துக்காட்டில் உள்ள தொகுதி வரையறையில் உள்ள நூல்களின் ஒருங்கிணைப்புகள் முழுமையான ஆயத்தொகுப்புகள் என்பதால், கடைசி இரண்டு நூல்கள் இழுக்க முடியாதவை. கட்டுப்பாட்டு புள்ளிகளைப் பயன்படுத்துவதன் மூலம் அவற்றை எவ்வாறு இழுக்க முடியும் என்பதை நாங்கள் கற்றுக்கொள்வோம்.
நீங்கள் ஒரு தொகுதி பொருளைத் தேர்ந்தெடுத்தால், பொருள் பட்டியில் "செயற்காட்சிபடுத்து" பொத்தான் உள்ளது. அதைக் சொடுக்குவதன் மூலம் தொகுதி பொருளை அதன் தொகுதிக்கு "விரிவுபடுத்தும்", மற்றும் objs
இப்போது நான்கு நூல்களையும் கொண்டிருக்கும். இந்தச் செயல்பாடு மீளக்கூடியது அல்ல (ஆனால் நிச்சயமாக நீங்கள் "செயல்தவிர்" என்பதைக் சொடுக்கு செய்யலாம்).
தற்போது ஒரு தொகுதியை உருவாக்குவதற்கான பரிந்துரைக்கப்பட்ட வழி, முதலில் சாதொபொகு திருத்தியைப் பயன்படுத்தி ஒரு வெற்று தொகுதியை உருவாக்குவது, காட்சி காண் திருத்தியைப் பயன்படுத்தி சில பொருள்களை உருவாக்கி, பின்னர் objs
க்குmodules.ModuleName.objs
க்கு பொருள்களை வெட்டி ஒட்டவும் சாதொபொகு திருத்தியைப் பயன்படுத்தலாம்.
தொகுதிக்குள் உள்ள பொருள்களை அளவுருக்களின் தொகுப்பால் வரையறுக்கலாம். ஒரு எளிய உதாரணத்தைப் பார்ப்போம்
இங்கே modules.ModuleName.params
என்பது சரங்களின் வரிசை "name=start:step:end:default"
ஆனது மாறிகளின் பெயரையும் வழுக்கிகளின் வரம்பையும் வரையறுக்கும்.தொகுதி பொருள் தேர்ந்தெடுக்கப்படும்போது வழுக்கிகள் பொருள் பட்டியில் தோன்றும்.
modules.ExampleModule.objs
வரிசைக்குள், எந்த மதிப்புகளையும் அந்த அளவுருக்களைப் பயன்படுத்தி வெளிப்படுத்தலாம். ஒரு சரத்திற்குள் (TextLabel
இன் text
பண்பு போன்றவை), மாறிகளின் சமன்பாடுகள் ஒரு இணை பின்னணிகளால் இணைக்கப்பட்டுள்ளன. எண் அளவுருக்களுக்கு (TextLabel
இன் fontSize
பண்பு போன்றவை), நீங்கள் அதை ஒரு சரமாக மாற்ற வேண்டும், இதனால் நீங்கள் அதில் பின்மேற்கோள் வடிவமைப்பைப் பயன்படுத்தலாம், எனவே ஒவ்வொரு சமன்பாடும் ஒரு இணை பின்மேற்கோள்கள் மற்றும் ஒரு இணை மேற்கோள்களால் சொருகபடுகிறது. சமன்பாடு math.js (தொடரியல்) மூலம் மதிப்பிடப்படுகிறது. சமன்பாடுகளில் நீங்கள் பயன்படுத்தக்கூடிய கிடைக்கக்கூடிய தொடரியல் மற்றும் செயல்பாடுகளை அங்குப் பார்க்கவும்.
அளவுருக்களின் உண்மையான மதிப்புகள் தொகுதி பொருளின் params
பண்பில் சேமிக்கப்படுகின்றன, அவை தொகுதி வரையறையைப் போலல்லாமல், வழுக்கியைப் பயன்படுத்தி காட்சி திருத்தியால் நேரடியாகத் திருத்தப்படலாம்.
தொகுதி பொருளை இழுக்கக்கூடியதாக மாற்ற, கட்டுப்பாட்டு புள்ளிகளின் தொகுப்பைப் பயன்படுத்தி தொகுதிக்குள் உள்ள பொருட்களை நாம் அளவுருவாக்க வேண்டும். உதாரணத்தைப் பார்ப்போம்
இங்கே modules.ModuleName.numPoints
கட்டுப்பாட்டு புள்ளிகளை வரையருக்கிறது. கட்டுப்பாட்டு புள்ளிகளின் ஆயத்தொகுப்புகள் (x_1
, y_1
), (x_2
, y_2
) போன்றவை, மேலும் அவை modules.ExampleModule.objs
உள் பயன்படுத்தலாம், முந்தைய பிரிவில் குறிப்பிட்டதைப் போல. குறியீட்டு 1 முதல் தொடங்குகிறது என்பதை நினைவில் கொள்க.
கட்டுப்பாட்டு புள்ளிகளின் ஆயங்களின் உண்மையான மதிப்புகள் தொகுதி பொருளின் points
பண்பில் சேமிக்கப்படுகின்றன, அவை எடுத்துக்காட்டு 1 இல் உள்ள கடின குறியீட்டு ஆயத்தொலைவுகளைப் போலல்லாமல், கட்டுப்பாட்டு புள்ளிகளை இழுப்பதன் மூலம் காட்சி காண் திருத்தியால் திருத்தப்படலாம், ஒவ்வொன்றும் காட்சியில் இரண்டு செறிவான சாம்பல் வட்டங்களாகக் காட்டப்பட்டுள்ளது. தொகுதி பொருளில் (உரை சிட்டைகளை இழுப்பது போன்றவை) நீங்கள் வேறு எங்கும் இழுத்தால், அனைத்து கட்டுப்பாட்டு புள்ளிகளும் ஒன்றாக நகரும்.
எங்கள் தொகுதி பொருள் இப்போது நகர முடியும் என்பதால், வழக்கமான கருவிகளைப் போலவே பல நிகழ்வுகளையும் உருவாக்குவது இப்போது மிகவும் எளிதானது. தொகுதியின் பெயர் கருவிகள் -> பிற பட்டியலில் காட்டப்பட்டுள்ளது, மேலும் நீங்கள் அதைத் தேர்ந்தெடுத்து, பின்னர் இரண்டு கட்டுப்பாட்டு புள்ளிகளுக்கான வரிசையில் வெற்று இடத்தில் இரண்டு புள்ளிகளைக் சொடுக்கு செய்யலாம். பொருள் பட்டியில் “நகல்” பொத்தானையும் பயன்படுத்தலாம்.
வரிசைகள் மற்றும் நிபந்தனைகளைப் பயன்படுத்தி மிகவும் சிக்கலான தொகுதி கட்டப்படலாம். உதாரணத்தைப் பார்ப்போம்
Modules.examplemodule.objs
க்குள், ஒரு வரிசையில் உள்ள எந்தவொரு பொருளும் இரண்டு சிறப்பு விசைகளைக் கொண்டிருக்கலாம்: "for"
மற்றும் "if"
. "for"
விசைக்கான " இன் மதிப்பு என்பது
"name=start:step:end"ஒரு சுழல் மாறியை வரையறுத்தல் அல்லது பல பரிமாண வளையத்தை விவரிக்கும் இந்த வடிவத்தின் பல சரங்களின் வரிசை. வரிசையில் உள்ள அத்தகைய பொருள் சுழல் மாறிகள் படி பல முறை நகலெடுக்கப்படுகிறது.
"if"` விசையின் மதிப்பு என்பது ஒரு இருமத்தை மதிப்பிடும் ஒரு கணிதத்தைக் குறிக்கும் ஒரு சரம் ஆகும், மேலும் இருமம் உண்மையாக இருந்தால் மட்டுமே அத்தகைய பொருள் வரிசையில் சேர்க்கப்பட்டுள்ளது.
தற்செயலான எல்லையற்ற வளையத்தைத் தடுக்க, "for"
சுழலுக்கான மொத்த மறு செய்கையின் எண்ணிக்கையானது தொகுதி வரையறையின்maxLoopLength
பண்பின் மூலம் வரையறுக்கப்படுகிறது, அதன் இயல்புநிலை மதிப்பு 1000 ஆகும். தேவைப்பட்டால் இந்தப் பண்பைப் பெரிய மதிப்புக்கு அமைக்கலாம்.
உங்கள் தொகுதி முழுவதும் பயன்படுத்தக்கூடிய கணித மாறிகள் மற்றும் செயல்பாடுகளை நீங்கள் வரையறுக்கலாம். உதாரணத்தைப் பார்ப்போம்
`தொகுதிகள். இந்த வரையறைகள் தொடர்ச்சியாக மதிப்பிடப்படுகின்றன, எனவே பிற்கால வரையறைகள் முந்தையவற்றைக் குறிப்பிடலாம்.
மாறி வரையறைகள் அனைத்து அளவுருக்கள் மற்றும் கட்டுப்பாட்டு புள்ளி ஆயத்தொகுதிகளுக்கும் முழு அணுகலைக் கொண்டுள்ளன, மேலும் வரையறுக்கப்பட்டவுடன், இந்த மாறிகள் அளவுருக்கள் மற்றும் கட்டுப்பாட்டு புள்ளி ஆயத்தொலைவுகள் போன்ற பொருள் வார்ப்புருக்களில் பயன்படுத்தப்படலாம், இது மிகவும் சிக்கலான மற்றும் மீண்டும் பயன்படுத்தக்கூடிய கணக்கீடுகளை அனுமதிக்கிறது.
For objects that already have custom equation input (such as Mirror -> Custom Equation), the equation property in the JSON is a string representing a LaTeX equation. To represent such an equation in math.js and refer to module parameters, etc, you need to wrap the math.js expression in a pair of double backticks. Such a block expands to a LaTeX equation with free variables like \(x\) for x
and \(\theta_0\) for theta_0
, which is different from a single-backtick block which expects no free variables and expands to a number. Here is an example of a custom equation mirror containing a custom parameter phi
Although you can use any math.js syntax and operations in variables and single-backtick blocks, for double-backtick blocks, only the math.js counterparts of the constants, operators, and functions supported by the equation input of the target object are allowed (see the info box of the target object). You can use custom functions defined in the vars
array, but the function definitions must ultimately consist of those allowed operations.
Implicit multiplication (e.g. 2x
) is also not allowed in this context, due to its ill-defined operator precedence in math.js. Please always use the *
operator explicitly (e.g. 2*x
).
அதன் வடிவத்தை வரையறுக்க ஏற்கனவே வெவ்வேறு வழிகளை ஆதரிக்கும் பொருள்களுக்கு (தற்போது கண்ணாடி -> கோள வில்லை மட்டுமே). இது போன்ற பொருள்களுக்குச் சிறப்பு சாதொபொகு தொடரியல் உள்ளது, அவை தொகுதி வரையறைக்குள் பயன்படுத்தப்படலாம், அவை எப்போதும் மேல் நிலை objs
வரிசையில் வடிவத்தால் வரையறுக்கப்பட்டாலும் கூட. இங்கே ஒரு எடுத்துக்காட்டு