【C#】winform平台使用SharpGL,导入Obj模型

本文记录了在C# Winform应用中使用SharpGL库来导入Obj模型的过程,包括配置SharpGL,处理两种不同情况的Obj模型(含法向量VN和不含法向量),并展示了效果。
摘要由CSDN通过智能技术生成

概要

  • 主要用于个人学习记录,不足之处请谅解
  • winform平台配置SharpGL【OpenGL在C#的封装】
  • 导入Obj模型【不包含材质(VT),读者可自行扩展】        
  1. 包含法向量数据(VN);
  2. 不包含法向量数据(自行计算VN)。
  3. 两种效果一致,因本人导出obj格式时偶尔出现偏差,故写了两种方法,均在此处记录

SharpGL配置

  • 在NuGet包管理器中直接配置安装

  • 配置完成后,在工具箱中将OpenGLControl拖到界面上即可使用

  • OpenGLControl的使用网上资料较多,这里不做说明

导入Obj模型

提示:下面直接粘贴代码,代码较为简单,不做过多解释【两种选其一即可】

  • Obj中包含法向量(VN)
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SharpGL;

namespace winform_SharpGL
{
    class ObjLoader2
    {
        public ObjLoader2()
        {

        }

        struct vertex
        {
            public float x;
            public float y;
            public float z;

            public vertex(float x, float y, float z)
            {
                this.x = x;
                this.y = y;
                this.z = z;
            }
        }

        List<List<float>> v = new List<List<float>> { };//存放顶点(x,y,z)坐标
        List<List<float>> vn = new List<List<float>> { };//存放法向量(x,y,z)坐标
        List<List<int>> f = new List<List<int>> { };//存放面的三个顶点索引
        List<int> VN = new List<int> { };//存放面的法向量索引


        public ObjLoader2(string fileName)
        {
            StreamReader objReader = new StreamReader(fileName);
            string texLineTem = "";
            while (objReader.Peek() !&#
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值