Shade3D 公式

29 掃引の断面配置への追加事項 [ Shade Labo ] 16 / 07 / 10 修正


#1

関連記事:
  • 24 掃引(3/3)
  • 25 Custom 掃引
  • 27 滑らかな掃引(2/2)
  • 28 水平掃引

29 - 1  始端が重点で始まるケースへの対応追加


**16 / 06 / 17**     一部修正

16 / 07 / 10     記述ミス修正


上記関連記事内で記述した script に関して、掃引始端が重点で始まる特殊なケースへの対応を 16 / 06 / 14, 17 に追加 / 修正しています。

その追加内容は全ての script でほぼ共通で、以下の通りになります。




script 本文の 断面配置に係わる記述部分を抜粋


      ただし、24 掃引 と 25 Custom 掃引 では bZs を bZ と記述

		if i == n - 1 and not closed :
			M = mx2*Mt1*Mr*Mt2*mx1
			
		else :
			v3 = labo.bezier_line_tangent(bZs[i + 1], 0)
			if v3.abs2() == 0 :						#  重点
				M = mx2*Mt1*Mr*Mt2*mx1
				if v2_prev == None :				#  最初の重点
					v2_prev = v2
				
			elif v2.abs2() == 0 :					#  最後の重点
				Qc = quaternion().slerp(v2_prev, v3, 1, False)	
				if Qc != None :	
					Q2 = Qc*Q2
					Mc = Qc.matrix()
					M = mx2*Mt1*Mr*Mc*Mt2*mx1
				else :
					M = mx2*Mt1*Mr*Mt2*mx1
				v2_prev = None

**追加**

16 / 06 / 17     一部修正

16 / 07 / 10     記述ミス修正

		if i == n - 1 and not closed :
			M = mx2*Mt1*Mr*Mt2*mx1
			
		else :
			v3 = labo.bezier_line_tangent(bZs[i + 1], 0)
			if v3.abs2() == 0 :						#  重点
				M = mx2*Mt1*Mr*Mt2*mx1
				if v2_prev == None :				#  最初の重点
					v2_prev = v2
				
			elif v2.abs2() == 0 :							#  最後の重点
				if v2_prev == None or v2_prev.abs2() == 0 :	#  始点が重点から始まっている	#  16 / 06 / 17 修正
					M = mx2*Mt1*Mr*Mt2*mx1										#  16 / 06 / 14 追加
				else :															#  16 / 06 / 14 追加
					Qc = quaternion().slerp(v2_prev, v3, 1, False)	
					if Qc != None :	
						Q2 = Qc*Q2
						Mc = Qc.matrix()
						M = mx2*Mt1*Mr*Mc*Mt2*mx1
					else :
						M = mx2*Mt1*Mr*Mt2*mx1
				v2_prev = None		#  16 / 07 / 10 tab が一つ余計に挿入されていた記述ミス修正