Q100508: படிநிலை (உதாரண மூல) நிறுவல் மூலம் காட்சி வரைபட சமையல் செயல்திறனை அதிகரித்தல்

சுருக்கம்

மீண்டும் மீண்டும் வரும் வடிவியல் உள்ள எந்தக் காட்சியிலும், நினைவகத் தடம் குறைப்பு மற்றும் காட்சி வரைபட சமையல் செயல்திறன் அதிகரிப்பின் நன்மைக்காக இன்ஸ்டான்சிங்கைப் பயன்படுத்தலாம். பொதுவாக, பல பிரதிகளில் வடிவியல் ஒரே மாதிரியாக இருக்கும்போது இன்ஸ்டான்சிங் நன்றாக வேலை செய்கிறது மற்றும் தேவையான மாற்றங்கள் மட்டுமே உருமாற்றங்கள் ஆகும். இந்தக் கட்டுரை "படிநிலை இன்ஸ்டான்சிங்" எனப்படும் நிகழ்வு மூலங்களைப் பயன்படுத்தி இன்ஸ்டான்சிங் செய்யும் முறையை விவரிக்கிறது, இது ஒரு புள்ளி மேகத்தின் புள்ளிகளுக்கு வடிவவியலை எவ்வாறு பயன்படுத்துவது என்பதற்கான எடுத்துக்காட்டை வழங்குகிறது.

கிடைக்கக்கூடிய பிற இன்ஸ்டான்சிங் அணுகுமுறைகள் பற்றிய கண்ணோட்டத்திற்கு, Katana டெவலப்பர் வழிகாட்டியில் பின்வரும் பகுதியைப் படிக்கவும்: இன்ஸ்டான்சிங் .

கீழே உள்ள புள்ளி கிளவுட் இன்ஸ்டான்சிங் பிரிவுகளை விளக்கும் ஒரு எடுத்துக்காட்டு திட்டத்திற்கு Katana திட்டக் கோப்பு PointcloudInstancingAndMaterialAssign_Arnold.katana ஐப் பார்க்கவும்.

மேலும் தகவல்

படிநிலை நிறுவல் கண்ணோட்டம்

பின்வரும் பகுதி படிநிலை இன்ஸ்டான்சிங்கின் சுருக்கமான கண்ணோட்டமாகும். இன்ஸ்டான்சிங் பற்றிய ஆழமான விவாதத்திற்கு, ரெண்டர்மேன் ஆவணங்கள்: ரெண்டர்மேன் 26 டாக்ஸ் - Katana இன்ஸ்டான்சிங் என்பது இன்ஸ்டான்சிங்கிற்கு அறிமுகமாக மூன்று இன்ஸ்டான்சிங் முறைகளையும் எவ்வாறு அமைப்பது என்பதை நிரூபிக்கிறது.

படிநிலை நிறுவலில், காட்சி வரைபட இருப்பிடங்களின் முழு படிநிலைகளையும் எடுத்துக்காட்டுகளாகப் பயன்படுத்தலாம். நிகழ்வு இருப்பிடங்கள் என்பது நிகழ்வைக் கொண்டிருக்கும் காட்சி வரைபட இருப்பிடங்கள் ஆகும், மேலும் நிகழ்வு காட்சி வரைபடத்தில் மூல இருப்பிடத்தின் கீழ் வடிவவியலால் வரையறுக்கப்படுகிறது. ஒரு நிகழ்வு மூலமானது ஒரு காட்சி வரைபட இருப்பிடத்தின் வகை பண்புக்கூறை “உணர்வு மூலத்திற்கு” அமைப்பதன் மூலம் அறிவிக்கப்படுகிறது. நிகழ்வு இருப்பிடங்கள் அவற்றின் வகை பண்புக்கூறை “உணர்வு” என அமைப்பதன் மூலம் அறிவிக்கப்படுகின்றன.

"உணர்வு மூலத்திற்கு" நிகழ்வு செய்யப்பட வேண்டிய படிநிலையின் உயர் நிலை இருப்பிடத்தைக் குறிக்கும் குழு இருப்பிடத்தின் வகை பண்புக்கூறை அமைப்பதன் மூலம் நிகழ்வு மூலமானது அறிவிக்கப்படுகிறது.

நிகழ்வு இருப்பிடங்கள் "instance" வகையாக இருக்க வேண்டும். இந்த இடங்களில் ஒரு geometry.instanceSource சரம் பண்புக்கூறு அமைக்கப்பட வேண்டும், இது நிகழ்வு மூல காட்சி வரைபட இருப்பிடத்தைக் குறிக்கிறது.

ஒரு புள்ளி மேகத்திற்கு படிநிலை நிறுவல்

ஒரு புள்ளி மேகத்திற்கு இன்ஸ்டான்சிங் செய்வது முந்தைய பிரிவில் விவரிக்கப்பட்டுள்ளபடி ஒற்றை நிகழ்வு இடத்திற்கு இன்ஸ்டான்சிங் செய்வது போன்றது. வித்தியாசம் என்னவென்றால், "instance" வகையின் பல இடங்களைப் பயன்படுத்துவதற்குப் பதிலாக, நிகழ்வு இருப்பிடம் என்பது நிகழ்வு மூலத்தை சுட்டிக்காட்டும் geometry.instanceSource சரம் பண்புக்கூறு கொண்ட "pointcloud" வகையின் ஒரு இடமாகும். பின்வரும் படிகள் இந்த அமைப்பை விளக்குகின்றன:

1. Alembic_In ஐப் பயன்படுத்தி நிகழ்வு மூலத்தை இறக்குமதி செய்யவும், பின்னர் காட்சி வரைபடத்தில் வடிவவியலின் பெற்றோர் இருப்பிடத்தின் வகையை instance source அமைக்கவும்.

2. Alembic_In ஐப் பயன்படுத்தி ஒரு alembic புள்ளி மேகத்தை இறக்குமதி செய்து, பின்னர் geometry.instanceSource பண்புக்கூறை நிகழ்வு மூலத்திற்கு சுட்டிக்காட்ட அமைக்கவும்.

இந்த முறையைப் பயன்படுத்துவது காட்சியில் உள்ள தனிப்பட்ட நிகழ்வுகளின் மீது குறைவான நுண்ணிய கட்டுப்பாட்டை வழங்குகிறது என்பதை நினைவில் கொள்ளவும். எடுத்துக்காட்டாக, ஒரு புள்ளி மேகத்தில் ஒவ்வொரு புள்ளிக்கும் காட்சி வரைபட இருப்பிடங்கள் உருவாக்கப்படாததால், தனிப்பட்ட நிகழ்வுகளுக்கு வெவ்வேறு பொருட்களை ஒதுக்குவது எளிதாக சாத்தியமில்லை. இருப்பினும், இந்த முறையைப் பயன்படுத்தி தன்னிச்சையான பண்புக்கூறுகளைக் கொண்ட தனிப்பட்ட நிகழ்வுகளுக்கு ஒரே பொருளின் ஷேடர் பண்புகளை மாற்றலாம். மேலும், புள்ளி மேகத்தை அளவிடுதல் அனைத்து நிகழ்வுகளையும் அளவிடுகிறது, மேலும் தனிப்பட்ட நிகழ்வுகளின் உருமாற்றத்தை எளிதாக மாற்றியமைக்க முடியாது. பொருள் மாறுபாடு அல்லது உருமாற்றங்கள் மீது கூடுதல் கட்டுப்பாடு தேவைப்பட்டால், மேலும் தனிப்பயனாக்கக்கூடிய OpScript அணுகுமுறைக்கு கீழே உள்ள பகுதியைப் படிக்கவும்.

OpScript Lua உடன் ஒரு புள்ளி மேகத்திற்கு படிநிலை நிறுவல்

ஒரு புள்ளி மேகத்திற்கு படிநிலை நிறுவுதல், ஒரு புள்ளி மேகத்தின் ஒவ்வொரு புள்ளிக்கும் இடங்களின் முழு படிநிலைகளையும் நிகழ்வுகளாக மாற்ற அனுமதிக்கிறது. ஒரு புள்ளி மேகத்தின் ஒவ்வொரு புள்ளிக்கும் காட்சி வரைபடத்தில் நிகழ்வு இருப்பிடங்களை உருவாக்க ஒரு ஆப்ஸ்கிரிப்டைப் பயன்படுத்துவது, ஒவ்வொரு நிகழ்விற்கும் தனித்தனியாக வெவ்வேறு பொருட்களை ஒதுக்க முடியும் மற்றும் நிகழ்வு இருப்பிடங்களின் மாற்றத்தின் மீது அதிக கட்டுப்பாட்டை வழங்கும் நன்மைகளைக் கொண்டுள்ளது. ஒரு சாத்தியமான குறைபாடு சற்று அதிக சிரமமான காட்சி வரைபடம், குறிப்பாக ஆயிரக்கணக்கான நிகழ்வுகள் இருந்தால். ஒரு புள்ளி மேகத்திற்கு படிநிலை நிறுவலை அடைவதற்கான படிகள் பின்வருமாறு:

1. Alembic_In முனைகளைப் பயன்படுத்தி ஒரு புள்ளி மேகத்தையும் நிகழ்வு மூலத்தையும் இறக்குமதி செய்யவும். பின்னர் நிகழ்வு மூலத்தின் வகை பண்புக்கூறை “உருவாக்க மூல”மாக அமைக்கவும்.

2. ஒரு OpScript முனையை உருவாக்கி, அதன் இருப்பிட அளவுருவை ஒரு காட்சி வரைபட இடத்திற்கு அமைக்கவும், அங்கு நிகழ்வுகள் உருவாக்கப்பட வேண்டும், எடுத்துக்காட்டாக: “/root/world/geo/derivedassets”.

3. OpScript முனையில், ஒரு user.instanceSourceLocation அளவுருவை உருவாக்கி, அதை நிகழ்வு மூலத்தின் காட்சி வரைபட இடத்திற்கு அமைத்து, user.pointCloudLocation ஐ அமைக்கவும். புள்ளி மேகத்தின் காட்சி வரைபட இருப்பிடத்திற்கான அளவுரு. பயனர் அளவுருக்களை உருவாக்குவதற்கான படிகளுக்கு, Katana பயனர் வழிகாட்டியைப் பார்க்கவும்: பயனர் அளவுருக்களைச் சேர்த்தல் .

4. பின்னர் ஒவ்வொரு புள்ளிக்கும் நிகழ்வு இருப்பிடங்களை உருவாக்க பின்வரும் குறியீட்டை OpScript முனையின் script அளவுருவில் நகலெடுக்கவும்.

-- Read op arguments

local instanceSourceLocation = Interface.GetOpArg("user.instanceSourceLocation"):getValue()local pointCloudLocation = Interface.GetOpArg("user.pointCloudLocation"):getValue() 
	if Interface.AtRoot() then 
		-- Read the point cloud 
		local points = Interface.GetAttr("geometry.point.P", pointCloudLocation):getNearestSample(Interface.GetCurrentTime()) 


		-- Loop over points
		local x, y, z
		local gb = GroupBuilder()
		for i=0, #points/3 - 1 do 
			x = points[3*i+1] 
			y = points[3*i+2] 
			z = points[3*i+3] 

			-- Build op arguments for the child location 
			gb:update(Interface.GetOpArg())
			gb:set("childAttrs", Interface.GetAttr("", instanceSourceLocation))
			gb:set("childAttrs.type", StringAttribute("instance"))
			gb:set("childAttrs.geometry.instanceSource", StringAttribute(instanceSourceLocation))
			gb:set("childAttrs.xform.interactive.translate", DoubleAttribute({x, y, z}))

			-- Create the child 
			Interface.CreateChild( 
				string.format("child%04d", i), 
				Interface.GetOpType(), 
				gb:build()) 
end 

else 
	local childAttrs = Interface.GetOpArg("childAttrs")
	for i=0, childAttrs:getNumberOfChildren()-1 do 
		Interface.SetAttr(childAttrs:getChildName(i), childAttrs:getChildByIndex(i))
		end 

end

மேலே உள்ள OpScript, ஒரு புள்ளி மேகத்தில் உள்ள ஒவ்வொரு புள்ளிக்கும் 'instance' வகையின் இருப்பிடத்தை உருவாக்குகிறது மற்றும் user.instanceSourceLocation அளவுருவில் குறிப்பிடப்பட்டுள்ள நிகழ்வு மூலத்திற்கு ஒவ்வொரு நிகழ்வு இருப்பிடத்தின் geometry.instanceSource பண்புக்கூறை அமைக்கிறது.

5. கடைசியாக, காட்சி வரைபடத்திலிருந்து புள்ளி மேக இருப்பிடத்தை அகற்ற ப்ரூன் அல்லது விசிபிலிட்டிஅசைன் முனையைப் பயன்படுத்தவும், இதனால் அது ரெண்டரிலிருந்து தவிர்க்கப்படும். ஒரு விசிபிலிட்டிஅசைன் முனை, வியூவரில் புள்ளிகள் இன்னும் காணப்படுவதை அனுமதிக்கிறது, அதே நேரத்தில் ப்ரூன் முனை, வியூவரில் நிகழ்வுகளின் அறிகுறி இல்லாமல் காலியாக இருக்கும்.

பொருள் ஒதுக்கீட்டைப் பயன்படுத்தி பொருள் மாறுபாடு

ஒவ்வொரு நிகழ்விற்கும் பொருளை மாற்றியமைப்பது சில கூடுதல் வேலைகளை ஏற்படுத்தும், ஏனெனில் அனைத்து நிகழ்வுகளும் ஒதுக்கப்பட்ட பொருள் போன்ற நிகழ்வு மூலத்தின் பண்புகளைப் பெறுகின்றன. இந்த பிரிவு, நிகழ்வுக்கு பொருள் மற்றும் ஷேடரை மாற்றுவதற்கான ஒரு முறையை விளக்குகிறது, அதே நேரத்தில் நிகழ்வுக்கு பொருள் மற்றும் ஷேடரை மாற்றுவதற்கான ஒரு முறையை விளக்குகிறது.

புள்ளி மேகங்களில் ஒவ்வொரு புள்ளிக்கும் நிகழ்வு இருப்பிடங்களை உருவாக்க, இலை-நிலை மற்றும் படிநிலை நிறுவல் முறையை ஆப்ஸ்கிரிப்டுடன் பயன்படுத்துவது, ஒவ்வொரு நிகழ்வு இருப்பிடத்திற்கும் பொருட்களை ஒதுக்க முடியும் என்ற நன்மையைக் கொண்டுள்ளது.

நிகழ்வு இருப்பிடங்களை உருவாக்கிய பிறகு, ஒவ்வொரு நிகழ்வின் இருப்பிடத்திற்கும் பொருட்களை மாற்றலாம். குறிப்பிட்ட நிகழ்வுகளை அடையாளம் காண்பது, காட்சி வரைபடத்தில் நிகழ்வு இருப்பிடங்களை விரிவுபடுத்துவது மற்றும் பார்வையாளரில் விரும்பிய நிகழ்வைத் தேர்ந்தெடுப்பது போன்றது. வழங்கப்பட்ட எடுத்துக்காட்டு திட்டத்தில், நிகழ்வு இருப்பிடங்களை /root/world/geo/derivedassets location கீழ் காணலாம்.

பின்னர் ஒரு பொருளை MaterialAssign முனையைப் பயன்படுத்தி அல்லது நிகழ்வு இடத்தில் ஒரு materialAssign பண்புக்கூறை அமைத்து, பொருள் இருப்பிடத்தைச் சுட்டிக்காட்டி விரும்பிய இடங்களுக்கு ஒதுக்கலாம்.

மேலும் படிக்க

இன்ஸ்டான்சிங் கண்ணோட்டத்திற்கு, கீழே உள்ள முதல் ஆதார இணைப்பைப் பார்க்கவும். கீழே உள்ள பிற ஆதாரங்கள் ஒவ்வொரு இன்ஸ்டான்சிங் முறையிலும் உள்ள பிற மேம்பட்ட இன்ஸ்டான்சிங் தலைப்புகளைப் பற்றி ஆழமாகப் பேசுகின்றன.

இணைப்புகள்

We're sorry to hear that

Please tell us why