vb.net3d编程 vb net

VB.net怎么进行实时的3D曲面绘图这份文件列出了参数在PowerMILL提供 。表1 列出一般PowerMILL参数,表2 列出了有效的PowerMILL安装额外的参数表 。表1 。PowerMILL参数 。标识符说明 (AdditionalStock)最大厚度的股票估计要去除刀具路径 。这是用来作为一种辅助手
unity3D是否支持VB.NET来编写游戏?: Unity3D是一个引擎,具体vb.net3d编程的游戏实现,需要使用编程语言来实现 。
VB.net可以开发小型3D图形显示软件吗?可以借助DirectX来编程 。免费3D引擎可不好找,一般来说速度比不上硬件加速后的DX,尤其令人头疼的是一般都没有针对VB的文档,LZ有这方面理想的话,自己写一个吧……
我不得不承认在VB上写DirectX的教程相当难找!如果LZ想深入研究三维图形问题,C++一定要学,就算不能用C++编程,起码要能把C++程序翻译成VB程序 。
我自己学会DX编程花了两三个月(很浅) 。编这样一个程序难度是有点大的 。
工具:DirectX9和其针对VB的库(项目-添加引用 。.NET库里DX库一般都有),VB不知道现在支不支持DX10以上的版本,不过9绝对够用了 。
思路:一切3D图形都是由三角形拼成的 。矩形挖掉一个圆孔可不是一个方便画的图形 , 我估计至少得有24个三角形 。你需要记录这些点的坐标,或者干脆把它们写在文件里,到时读出来 。
这是我的一个老DX程序的不完全的代码(显示一个黑乎乎的平面) , 不一定能编译,可以参考一下 。
Imports Microsoft.DirectX '一定要~
Public Class FormMain
'Direct3D Startup
Dim d3dpp As New Direct3D.PresentParameters 'DX基本参数,例如全屏还是窗口等
Public MyDevice As Direct3D.Device ‘DX基本设备 , 画图就靠它 。
'Matrices
Dim matWorld, matView, matProj As Matrix '世界位置矩阵,摄像机位置矩阵和透视矩阵 , 数学要学好啊 。
'mesh
Public MyPlane as Direct3D.Mesh ’我们的物体
Public VBPlane(3) As Direct3D.CustomVertex.PositionNormalTextured '存放顶点位置的数组
#Region "DX Core"
Public Sub InitDeviceObjects()
With d3dpp ‘以下请照抄 。
.Windowed = True ‘不全屏 。
.SwapEffect = Direct3D.SwapEffect.Discard ’双缓冲交换效果 。请百度“双缓冲”
.BackBufferFormat = Direct3D.Format.Unknown
.EnableAutoDepthStencil = True ’让DX自动管理深度缓冲
.AutoDepthStencilFormat = Direct3D.DepthFormat.D16
End With
MyDevice = New Direct3D.Device(0, Direct3D.DeviceType.Hardware, Me.Handle, Direct3D.CreateFlags.HardwareVertexProcessing, d3dpp) '创建DX设备啦!以下两句请照抄 。
MyDevice.SetRenderState(Direct3D.RenderStates.ZEnable, True) ‘Z缓冲
MyDevice.SetRenderState(Direct3D.RenderStates.NormalizeNormals, True)'法线归一化,请看相关数学书籍 。
End Sub
Public Sub RestoreDeviceObjects()
Dim PlaneIB() As Short = {0, 1, 3, 0, 2, 3} ’顶点索引信息 。
Dim AttrTable(1) As Direct3D.AttributeRange ‘顶点分组属性表
AttrTable(0).AttributeId = 0
AttrTable(0).FaceStart = 0
AttrTable(0).FaceCount = 2 ’有两个三角形
AttrTable(0).VertexStart = 0
AttrTable(0).VertexCount = 4 ‘四个点
‘顶点坐标信息 。
VBPlane(0) = New Direct3D.CustomVertex.PositionNormalTextured(-500, -500, 0, 0, 0, 1, 0, 0)
VBPlane(1) = New Direct3D.CustomVertex.PositionNormalTextured(500, -500, 0, 0, 0, 1, 1, 0)
VBPlane(2) = New Direct3D.CustomVertex.PositionNormalTextured(-500, 500, 0, 0, 0, 1, 0, 1)
VBPlane(3) = New Direct3D.CustomVertex.PositionNormalTextured(500, 500, 0, 0, 0, 1, 1, 1)
MyPlane = New Direct3D.Mesh(2, 4, Direct3D.MeshFlags.Managed, Direct3D.VertexFormats.Position + Direct3D.VertexFormats.Normal + Direct3D.VertexFormats.Texture1, MyDevice) ’创建物体

推荐阅读