Insider Insider
3dnchu 尚无浏览 2 分钟阅读

Select Hard Edge Softimage – 从已选择的多边形网格中选择硬边(蓝色边) Softimage脚本备忘

这不是文章,是个人备忘。

※2013/04/25 补充
收到了 myara 先生亲自发来的评论。

看来可以用标准功能实现……完全是我知识不足。太丢脸了。
这篇文章就作为我的黑历史保留吧。
来看的人能悄悄关掉就帮大忙了(汗)

我在建模时,会各种利用 SI 的硬边功能(边会变蓝的那个)。
以硬边为基础指定 UV 边界后进行展开,
以硬边为基础进行倒角→制作高模,差不多就是这种用法。

如果用默认功能来做这个硬边化,边缘集会像垃圾一样越积越多。解决这个烦恼的,就是 myara 先生的mHard Edge Marker
我一直很常用它,非常感谢。
不过,mHard Edge Marker 虽然有根据边角度进行选择之类的功能,却没有选择已经硬边化部分的功能,所以在进行上述流程时会稍微有点低效。
所以就写了一个简单的脚本……

Softimage 脚本 Select Hard Edge
从已选择的多边形网格中选择硬边(蓝色边)

Select Hard Edge Softimage

Select Hard Edge Softimage

已确认可正常运行的版本:Softimage 2012 (支持 ICE 的 SI 应该也可以吧
语言:VBScript

'---------Select Hard Edge
'---------ymt3d
'---------https://3dnchu.com/
'---------2013/04/25

set oObj = selection(0)

'-------------------------------Main
set oICEatt = oObj.Activeprimitive.geometry.ICEAttributes
aHEdge = Array()
for each oAtt in oICEatt
	if oAtt.name = "EdgeIsHard" then
		i = 0
		oParam = oAtt.DataArray
		for each o in oParam
			if o = 0 then
				Push aHEdge,i'数组に押し込む
			end if
		i = i + 1
		next
	end if
next

if UBound(aHEdge) >= 0 then
	aHedgeID = Join(aHEdge, ",") 
	SelectGeometryComponents oObj&".edge["& aHedgeID &"]"
end if

'-------------------------------配列に押しこむ処理
Sub Push(Items, Item)
ReDim Preserve Items(UBound(Items) + 1)
Items(UBound(Items)) = Item
End Sub

'-------------------------------End

使用的是获取并使用 ICE 用参数。
如果还有其他更好的方法,或者“用默认功能就能做到!”之类的重要信息,也请告诉我……
myara 先生!请务必把这个功能加入 mHard Edge Marker……