NSRAYFAN与各物体交点的获取
前言
有时候因为光线与面交点的位置没法获取,采用NSRAY获取反光点位置,具体例子如下
一、参数设置
参数如下,NSRAYFAN一般按照发生鬼像或者flare的一族光线设置位置,此处任意取的平行光。
二、代码如下
代码如下(示例):
Public Sub LTDBAccess_NSRAY()
'定义参数
Dim ObjectList As String, ObjectKey As String, _
ObjectName As String, SegmentList As String, SegmentKey As String, _
SegmentName As String
Dim Status As Integer, SegmentListSize As Integer, _
ObjectListSize As Integer
Dim i As Integer, j As Integer
Dim SegmentProperty1, SegmentProperty2, SegmentProperty3, _
SegmentProperty4, SegmentProperty5, SegmentProperty6, SegmentProperty7
'定义接口
Dim lt As LTAPI
Set lt = New LTAPI
'获取nsrayfan
ObjectList = lt.DbList("LENS_MANAGER[1]", "NS_FAN")
'获取size大小
ObjectListSize = lt.ListSize(ObjectList)
'循环获取存在物体的名字,并打印交点的各个属性
For i = 1 To ObjectListSize
ObjectKey = lt.ListNext(ObjectList)
ObjectName = lt.DbGet(ObjectKey, "NAME")
'打印名字
Debug.Print ObjectName
Debug.Print "------------------------------------------------"
SegmentList = lt.DbList(ObjectKey, "NS_SEGMENT")
'当前NSray的交点
SegmentListSize = lt.ListSize(SegmentList)
For j = 1 To SegmentListSize
SegmentKey = lt.ListNext(SegmentList)
SegmentName = lt.DbGet(SegmentKey, "NAME")
'获取交点名称
SegmentProperty1 = lt.DbGet(SegmentKey, "ELEMENT")
'获取交点元件
SegmentProperty2 = lt.DbGet(SegmentKey, "SURFACE")
'获取交点面
SegmentProperty3 = lt.DbGet(SegmentKey, "FOLLOWING INDEX")
'交点折射率
SegmentProperty4 = lt.DbGet(SegmentKey, "PATH TRANSMITTANCE")
'交点透过率
' 交点的XYZ坐标
SegmentProperty5 = lt.DbGet(SegmentKey, "Global_X")
SegmentProperty6 = lt.DbGet(SegmentKey, "Global_Y")
SegmentProperty7 = lt.DbGet(SegmentKey, "Global_Z")
'打印参数
Debug.Print SegmentName, SegmentProperty1, _
SegmentProperty2, SegmentProperty3, SegmentProperty4, _
SegmentProperty5, SegmentProperty6, SegmentProperty7
Next j
Next i
'删除物体列表
Status = lt.ListDelete(ObjectList) 'Delete the ObjectList
'删除交点列表
Status = lt.ListDelete(SegmentList) 'Delete the SegmentList
End Sub
结果
输出光线与各个面交点属性和交点XYZ坐标。