Private viewWidth As Single = 2
Private viewHeight As Single = 2
Private Sub View3D_MouseWheel(sender As Object, e As MouseEventArgs) Handles Me.MouseWheel
Dim s As Single = -CSng(e.Delta) / 2000
viewWidth += s
viewHeight += s
If viewWidth <= 0 Or viewHeight <= 0 Then
Exit Sub
End If
device.Transform.Projection = Matrix.OrthoLH(viewWidth, viewHeight, 0, 100)
''下面适用于透视投影
'Dim scaleFactor As Single = -CSng(e.Delta) / 2000 + 1.0F
'CamPostion.Subtract(CamTarget)
'CamPostion.Scale(scaleFactor)
'CamPostion.Add(CamTarget)
'Dim viewMatrix As Matrix = Matrix.LookAtLH(CamPostion, CamTarget, New Vector3(0, 1, 0))
'device.Transform.View = viewMatrix
End Sub
Private viewHeight As Single = 2
Private Sub View3D_MouseWheel(sender As Object, e As MouseEventArgs) Handles Me.MouseWheel
Dim s As Single = -CSng(e.Delta) / 2000
viewWidth += s
viewHeight += s
If viewWidth <= 0 Or viewHeight <= 0 Then
Exit Sub
End If
device.Transform.Projection = Matrix.OrthoLH(viewWidth, viewHeight, 0, 100)
''下面适用于透视投影
'Dim scaleFactor As Single = -CSng(e.Delta) / 2000 + 1.0F
'CamPostion.Subtract(CamTarget)
'CamPostion.Scale(scaleFactor)
'CamPostion.Add(CamTarget)
'Dim viewMatrix As Matrix = Matrix.LookAtLH(CamPostion, CamTarget, New Vector3(0, 1, 0))
'device.Transform.View = viewMatrix
End Sub

本文介绍了如何在Directx的3D环境中,通过鼠标滚轮事件实现正交投影和透视投影下mesh的放大操作。通过调整viewWidth和viewHeight实现正交投影的缩放,并使用Matrix.OrthoLH更新投影矩阵。对于透视投影,通过改变相机位置实现放大效果,但代码未在本次事件中执行。
最低0.47元/天 解锁文章
100

被折叠的 条评论
为什么被折叠?



