轩辕剑在线(swdol)3D模型浏览器
轩辕剑在线这个游戏的MODEL有很多以PLY作为扩展名的文件,这个文件为三维模型文件,该文件进行了lzo算法的压缩(swdol很多文件都是这样干的),解压后从这个文件中可读取到模型的顶点数、每个顶点的坐标、三角形面的个数、以及三角形面的三个点使用的是那几个顶点的坐标、然后是三角形面对应的纹理贴图文件的编号,以及在播放动画时(见软件中的Q键效果),这些顶点是怎么变化的。
贴图文件位于和MODEL同级的TEX目录,以ALL加上5位数的变化命名,以TEX结尾。例如:ALL00002.TEX
这种TEX文件经过lzo解压后,得到的就是位图格式的图片文件。
早先得到一个 "回梦"的一份代码,编译出来的结果和下面这个二进制版本接近。
http://download.csdn.net/detail/q3020025470/6795453
"回梦"这个QT版本的浏览器,其核心代码基本来自于"谁伴我一生闯荡"的VC6.0的代码工程。
这两个版本,都存在贴图错误和显示控制的问题。
测试了几个模型都使用了2个贴图文件,修改代码,要不然就使用第一个贴图文件的内容,要不就是第二个。
仔细看了下通过三角形面索引找贴图索引的逻辑存在问题。这个是对ply文件数据结构的理解不正确导致。
再有就是代码中paintGL函数,先调用glBegin(GL_TRIANGLES); 再调用的glBindTexture,这个调用顺序有问题,会导致bind的纹理不生效。
原始版本中对模型显示的控制方法非常别扭,见下图的基本操作,也进行了修改。
原始版本:
修正后版本
代码放在:
https://git.oschina.net/swdol/plyViewer
编译好的工具从这里下载:
https://git.oschina.net/swdol/plyViewer/attach_files
http://download.csdn.net/detail/jerryutscn/9577437
在翻阅资料时,找到下面这个链接,从浅入深,讲的比较详细
OpenGL入门学习
http://www.cppblog.com/doing5552/archive/2009/01/08/71532.html
使用GL_TRIANGLES绘制一个三角形面,然后贴纹理:
glBegin(GL_TRIANGLES);
glTexCoord2f(pp[face[i].index1].U,pp[face[i].index1].V );
glVertex3f(pp[face[i].index1].x/scaled,pp[face[i].index1].y/scaled,pp[face[i].index1].z/scaled);//上顶点坐标
glTexCoord2f(pp[face[i].index2].U,pp[face[i].index2].V );
glVertex3f(pp[face[i].index2].x/scaled,pp[face[i].index2].y/scaled,pp[face[i].index2].z/scaled);//左下角坐标
glTexCoord2f(pp[face[i].index3].U,pp[face[i].index3].V );
glVertex3f(pp[face[i].index3].x/scaled,pp[face[i].index3].y/scaled,pp[face[i].index3].z/scaled);//右下角坐标
glEnd();
glTexCoord2f函数用来从当前纹理,利用U.V这两个浮点型的x,y坐标,完成贴图动作。
glVertex3f是绘制三角形面。
下面这个例子观察起来比较直观:
上图是正确的情况,下图故意将一个三角形的面的纹理弄错:
轩辕剑在线(swdol)3D模型浏览器相关推荐
- 3D API,快速展示模型,实现3D模型在线可视化展示,还能进行各种测量视图等操作......
如果你是一名从事3D建模相关的代码开发者,是否经常会遇到以下问题: 渲染效果不及预期 模型展示不够直观 测量视图等操作难以实现 ..... 由此带来的结局大多是: 造成客户对模型理解不清晰,增加双方的 ...
- 照片转3d模型_在线搭建3D场景
小编分享一个很有意思的可以在线搭建3D场景网站,像是玩积木一样简单,首先我们看一下网站是什么样的. 网站首页 有很多场景.模型可以选择,把自己喜欢的模型往场景里摆放进行搭建,所选择的模型都有链接可以打 ...
- 3D模型在线查看利器【多种格式】
BimAnt 3DViewer网站可以 打开多种 3D 文件格式并在你的浏览器中可视化展示3D模型,支持 obj.3ds.stl.ply.gltf.glb.off. 3dm.fbx 等等. 1.支持的 ...
- 3D模型在线云转换和在线展示
迪威模型(www.3dwhere.com)是供网友在线分享与3D模型交易的平台.目前,迪威模型提供的3D模型组件逾两百万条.自上线以来,迪威模型已先后为数万名从业者提供优质.完美的3D模型资料以及迪威 ...
- WebGL在线模型浏览器
前几年做的基于WebGL在线模型浏览器,用的threejs引擎,可以在各方向观察.动态剖切.添加热点. demo 网址:模型浏览器 Demo
- 在你的网站、浏览器中集成3D模型预览功能,使用开源项目Online3DViewer
开源项目Online3DViewer # 通过url参数形式预览模型 https://3dviewer.net/#[3D模型URL] Online3DViewer 是一个免费.开源的web解决方案,可 ...
- 3D模型Cad格式免费在线转换
3D模型Cad格式免费在线转换 亲测,完美转换各格式 http://www.3dwhere.com/conv
- three.js加载3d模型_基于WebGL的3D技术在网页中的运用 ThingJS 前端开发
Three.js.ThingJS这些引擎库可以加载3D制作软件的模型,大幅度提高了制作效率,改变WebGL开发困难的局面,让Web开发者享受便捷的3D开发服务.三者的难度对比如下: ThingJS(框 ...
- smart3D、acute3D、three3D等技术网页浏览3D模型注意事项
smart3D.acute3D.three3D等技术网页浏览3D模型注意事项 smart3D.acute3D.three3D等技术在网页中浏览3D模型注意事项: 1.浏览器必须支持WebGL(全写We ...
最新文章
- Python两个内置函数——locals 和globals
- 一起学ASP.NET Core 2.0学习笔记(一): CentOS下 .net core2 sdk nginx、supervisor、mysql环境搭建...
- 一个C/C++程序从编译到最终生成可执行文件的全过程分析
- Linux内核社区是数字军火商、斯拉夫兵工厂甚至NSA的最爱
- zookeeper 分布式协调服务
- 腾讯商业数据分析师培养计划
- mongo shell连接到mongoDB及shell提示符下执行js脚本
- git 分支推送项目
- .NET GC 实时监控工具 dotnet gcmon 介绍
- java 继承示例_Java中的继承类型以及示例
- mysql 事务sqlserver_SQLServer数据库:事务与隔离级别实例讲解
- php1500,圆周率1500多位
- Exp5 MSF基础应用 ——20164316张子遥
- 贪心字典序最小问题poj3617
- matlab做高斯滤波,matlab高斯滤波自定义函数怎么做
- python基础教程十进制_Python基础教程(四)
- 基于ros单线激光雷达的坐标读取
- iframe如何发送请求_如何实现高性能的在线 PDF 预览
- Excel 对比两个表的相同列内容是否一致
- 苹果花期行情结束见顶?铁矿石认沽次末日25倍,纯碱09-01季节性反套?2022.5.10
热门文章
- 全国计算机软件985专业排名,全国计算机软件专业大学排名TOP20,清华居然不是第一!...
- 构建高性能微服务架构(网易)
- 为不同大小的图片添加纯色背景
- 【已解决】将CentOS7系统安装至U盘(二):配置打印机
- 解决VisualVm的Profiler一直转圈:正在连接到目标 VM...
- 知网的html查重报告看不了,知网查重报告单怎么看
- 根据浏览器内核区分微信、QQ、QQ浏览器
- ArcGIS打开山东天地图WMTS服务
- Mojarra JSF ViewState 反序列化漏洞复现
- Android圆盘控件,DiscView 圆盘控件 动态展示百分比等数据 @codeKK Android开源站