技术标签: webgl学习之路
我本是搞Android 的,公司需要就搞3D展示了,刚开始找了很多资料,觉得threejs最为适合我,原因是我会点前端的东西,threejs也比较简单,demo也齐全;但是,由于公司没有真正的UI,全凭老板一句话,你们懂得,修修改改,晚上学习,白天实现功能,搞了几个月,实现的功能有,导入3d文件,展示楼层,设备参数展示,报警,位置提醒这些主要的功能,又感觉不满意,想要bim功能,又想要游戏效果,其它第三方的价格过高,与是我开始接触原生webgl,想更深入进去;
不废话了,怎么学?这条路很崎岖,没人带,只能自学,买买书,看看视频,极客学院有免费基础,还不错,太基础,个人觉得webgl编程指南 很不错,很适合入门,视频csdn webgl坚如磐石很不错,不过你最好有点基础,虽然是基础教程,但是老师讲的并不是很细吧(给我的感觉);
所以,建议是:买本webgl编程指南的书,然后加几个webgl活跃的群,书的前几章你一定要记得,并能大概写的下来,不明白也不要紧,我刚开始也是这样,发现越大后面越困难,最后决定,死记没个代码,神奇的事情出现了,我在后面的时候学的很快,并能马上明白每个的含义,总结得出,是我们平时看的时候,太着急了,概念都没记清楚就看其它的,结果发现什么都不会,也就怎么学都学不懂,敲代码,用心敲代码是每个程序员必备的,这是思考,也是加强记忆,也是检验真理;
其中的数学没必要太过纠结,矩阵有数学库,足够你入门基础了,然后看看线性代数,也可以只看向量的点积,叉积的计算与运用,还有矩阵;进阶那就要对数学更深的理解;
还有就是多看看人家写的demo,也可以试着看threejs 的源码;
着色器也可以参照http://thebookofshaders.com/01/?lan=ch
在这条崎岖的路上我也只是新手,一直觉得很简单,很常见,没必要去写,发现群里原来比我还新的,才发现我已经走了很久,但我还是新手;请多多指教!
很多问大场景,数据量过大的,比如有人要搞个600M的模型;那还是不要用webgl,浏览器有限制的,这是目前所有公司都面临的问题,对于百多兆的文件算是勉强接受,这都要进行按场景加载,按需加载,以及模型复用,剔除等;大场景还是用unity3d做吧;
文章浏览阅读1k次。SimpleDateFormat 24小时和12小时转换HH 代表 24 小时制 , hh 表示 12 小时制public class SimpleDateFormat_12_24_ { public static void main(String[] args) { SimpleDateFormat sdf_24 = new SimpleDateFormat("HH:mm:_androidstudio导入simpledateformat
文章浏览阅读1.8k次,点赞9次,收藏23次。YOLOv5是目前应用广泛的目标检测算法之一,其主要结构分为两个部分:骨干网络和检测头。骨干网络采用的是CSPDarknet53,这是一种基于Darknet框架的改进版卷积神经网络。CSPDarknet53通过使用残差结构和跨层连接来提高网络的表达能力,并且采用了空洞空间金字塔池化(ASPP)来实现多尺度的信息提取。这样设计的骨干网络具有较强的特征提取能力,可以有效地提取出图像中的目标信息。检测头是YOLOv5的另一个关键组成部分,主要用于从骨干网络特征图中提取目标检测信息。_yolov5计算与识别物体的距离
文章浏览阅读1.1k次,点赞2次,收藏3次。vs2017+qt5.9,链接库为GDAL,读取dem高程时,发现内存使用错误,经过检查。发现在读取中文路径的时候,qstring转const char *的时候,出现乱码。最初使用的是:weixin_33853794作者的方法,链接为:链接1。QString FileName = "mv_" + QString("%1.txt").arg(iPoc);//此处可以实现动态赋值std::string str = FileName.toStdString();const Char *mvFi_qstring中文转 const char乱码
文章浏览阅读955次。 .NET多线程在实际应用中会出现一些异常问题,下面请看作者对于.NET多线程异常的一些处理方法。多线程应用,在实际的项目或产品开发中,原则上来说,应该尽量避免(这是我一家之言,因为我不是一个一心可多用的人 )。但是在强调用户体验的要求下或开发平台的限制下(如 Silverlight Socket 通讯),我们不得不用多线程。多线程环境在我们的产品 SE 中,出现多线程的地方主要有两大类,一类是通过 ThreadPool 或 new Threa_threadpool.queueuserworkitem 未处理的异常
文章浏览阅读774次,点赞2次,收藏5次。是不是很简单,哈哈哈。_stm32软件重启
文章浏览阅读2.6k次。spark依赖pom文件<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLoca..._spark读取ftp文件
文章浏览阅读2.7k次,点赞11次,收藏28次。四足机器人|机器狗|仿生机器人|多足机器人|PPT|汇报|科研汇报PPT|技术汇报_四足机器人关键技术ppt
文章浏览阅读1k次。org.springframework.data.redis.serializer.SerializationException: Could not read JSON将数据存储到redis中报错,由于对象(实体)中缺少json的某个字段属性引起解决办法。@JsonIgnoreProperties(ignoreUnknown = true) _org.springframework.data.redis.serializer.serializationexception: could not
文章浏览阅读375次。在本节中,将设置商品提醒组件,当用户点击‘Notify Me’的时候,像商品列表组件发出事件。1、打开 product-alerts.component.ts, 从 @angular/core 中导入 Output 和 EventEmitter。2、在组件类中,用 @Output 装饰器和一个事件发射器(EventEmitter)实例定义一个名为 notify 的属性。这可以让商品提醒组件在 ..._angular notifychange$
文章浏览阅读661次。一周时间快速阅读了400页的《javascript基础教程》,理解了主要概念。解决了一个很久之前的疑问。我的网站是使用flask框架搭建的,介绍flask web的一本著名的书(之前提到过)作者搭建个人博客时,向读者推荐了flask-bootstrap,flask_moment这两个库,前者能快速的解决前端样式问题,后者提供了时间戳功能。但在某种情况下,比如网络延迟或者运营商的问题,访问网..._bootstrap 速度慢 maxcdn
文章浏览阅读1.7k次。前端 音频/视频(Audio/Video)开始加载以及播放的过程_video.addeventlistener
文章浏览阅读2.2k次。怎么用光盘重装系统?很多小伙伴只会系统光盘安装系统的方法,除了系统光盘重装系统,还有硬盘安装、一键重装、U盘重装、Ghost重装系统等等方法,下面除了教你怎么用光盘重装系统之外,还给你介绍下一键重装系统的操作步骤。光盘重装系统图文首先安装前准备:保证电脑带有光驱功能,并且光驱处于正常状态以及系统光盘能够正常读取。1、首先系统光盘放入电脑光驱位置,等待电脑读取光盘成功后,就继续怎么用光盘重装系统了。..._光盘放入光驱显示可用字节为0