首页 > 其他分享 >【NET 7.0、OpenGL ES】使用Silk.NET渲染MMD,并实时进行物理模拟。

【NET 7.0、OpenGL ES】使用Silk.NET渲染MMD,并实时进行物理模拟。

时间:2023-09-18 17:22:05浏览次数:38  
标签:OpenGL 模型 渲染 MMDModel 7.0 cs mmd NET

有关mmd播放器,网上也有许多非常漂亮的实现,如 pmxeditor、saba、blender_mmd_tools等等。。

首先我想先介绍下我参考实现的仓库:

sselecirPyM/Coocoo3D: Experimental MMD renderer using DX12 and DXR. (github.com),这是sselecirPyM大神使用NET 6.0和DX12实现的mmd渲染器,支持自定义渲染管线、光照等,感兴趣的小伙伴可以在b站找他的视频,搜名字就好。

benikabocha/saba: OpenGL Viewer (OBJ PMD PMX) (github.com),这是国外一名大神使用c++做的mmd渲染器,支持卡通光照,我的代码基本上参考该仓库。

接下来我介绍下渲染的实现流程,方便大家熟悉代码。

mmd模型存在多种文件格式:

pmx、pmd属于模型文件,里面包含模型的最基本信息,顶点、mash、骨骼、材质等等。。

vmd属于动画文件,包含每一帧动画要做的处理,但vmd不能单独使用,他必须有一个模型作为载体。

代码流程:

1. 解析模型、动画文件。(PmxParsing、VmdParsing).cs

2. 管理该模型数据。(MMDModel、PmxModel).cs

3. 管理动画数据。(VmdAnimation、VmdAnimationController).cs

4. 管理模型的物理信息。(MMDRigidBody、MMDJoint、MMDPhysics、MMDPhysicsManager).cs

5. 使用动画类对模型进行控制 VmdAnimation->MMDModel。

6. 进行物理模拟 MMDPhysicsManager->MMDModel。

7. 更新顶点数据并渲染 MMDModel->Update->Draw。

效果图:

 

 仓库地址:qian-o/SabaSharp (github.com)

标签:OpenGL,模型,渲染,MMDModel,7.0,cs,mmd,NET
From: https://www.cnblogs.com/xymfblogs/p/17712441.html

相关文章

  • netty发送socket短连接请求,自定义报文头
    packagecom.chinaums.japi.util;importio.netty.bootstrap.Bootstrap;importio.netty.buffer.ByteBuf;importio.netty.buffer.Unpooled;importio.netty.channel.*;importio.netty.channel.nio.NioEventLoopGroup;importio.netty.channel.socket.SocketChannel;......
  • 【译】.NET 7 中的性能改进(四)
    原文|StephenToub翻译|郑子铭边界检查消除(BoundsCheckElimination)让.NET吸引人的地方之一是它的安全性。运行时保护对数组、字符串和跨度的访问,这样你就不会因为走到任何一端而意外地破坏内存;如果你这样做,而不是读/写任意的内存,你会得到异常。当然,这不是魔术;它是由JIT在......
  • 【译】使用 ML.NET 进行机器学习 - 集群完整指南
    原文|NikolaM.Zivkovic翻译|郑子铭在之前的几篇文章中,我们探索了一些基本的机器学习算法。到目前为止,我们介绍了一些简单的回归算法,分类算法。我们使用ML.NET实现和应用这些算法。到目前为止,我们探索了使用监督学习的算法。这意味着我们始终拥有用于训练机器学习模型的输......
  • 快学会这个技能-.NET API拦截技法
    大家好,我是沙漠尽头的狼。本文先抛出以下问题,请在文中寻找答案,可在评论区回答:什么是API拦截?一个方法被很多地方调用,怎么在不修改这个方法源码情况下,记录这个方法调用的前后时间?同2,不修改源码的情况下,怎么对方法的参数进行校正(篡改)?同3,不修改源码的情况下,怎么对方法的返回值进行伪造?......
  • 【译】.NET 7 中的性能改进(一)
    原文|StephenToub翻译|郑子铭一年前,我发布了.NET6中的性能改进,紧接着是.NET5、.NETCore3.0、.NETCore2.1和.NETCore2.0的类似帖子。我喜欢写这些帖子,也喜欢阅读开发人员对它们的回复。去年的一条评论特别引起了我的共鸣。评论者引用了虎胆龙威的电影名言,“'当亚历山......
  • yarn 出现 【 info There appears to be trouble with your network connection. Retr
    第一种解决方案#调整为taobao镜像源yarnconfigsetregistryhttps://registry.npm.taobao.org我用了没用,可以试试第二种解决方案要在项目根目录下创建后缀名为.yarnrc的文件,并设置network-timeout的值为600000,你可以按照以下步骤进行操作:打开文本编辑器,例如Note......
  • ASP.Net Web项目调试运行没问题,发布后一直403
    ASP.NetWeb项目调试运行没问题,发布一直403因为换了仓库,同事移了下项目,然后就如标题了,经过几个小时排查,发现项目中只有Global.asax.cs而Global.asax没有包含进项目…特此记录下......
  • vb.net 开发 excel Addin 学习(5)---- 几个小问题
    在做 excelAddin开发的时候越到了几个小问题。总结一下。一,Addin无缘无故不加载。没有任何痕迹可查询。解决方法: 可能是Excel禁止了你的addin,也就是你的addin被列入了黑名单,如果真是这样,看一下下面的(有图示说明),或许可以解决问题。在Excel2003中,点击标题栏中的......
  • .net core 浏览器缓存设置
    1、浏览器缓存设置  [ResponseCache(Duration=20)] 将ResponseCache特性设置在接口方法上就可以了,Duration中的时间是以秒为单位2、服务端缓存设置 a、将app.UseResponseCaching()方法放在app.MapControllers()方法之前  b、如果使用了app.UseCors()方法,要确保app.......
  • 记一次 .NET 某电力系统 内存暴涨分析
    一:背景1.讲故事前些天有位朋友找到我,说他生产上的程序有内存暴涨情况,让我帮忙看下怎么回事,最简单粗暴的方法就是让朋友在内存暴涨的时候抓一个dump下来,看一看大概就知道咋回事了。二:Windbg分析1.到底是谁吃了内存这个问题说的再多也不为过,一定要看清楚这个程序是如何个性......