- 博客(86)
- 资源 (12)
- 收藏
- 关注
原创 C++ Primer Plus (第六版)的习题代码
整本书都看完了,把后面的习题也做了一遍,从中确实学到很多,以后在项目里进一步检验自己的所学,并且都用GNU g++验证过,整个项目在github上,链接如下:C++ Primer Plus (第六版)的习题代码...
2021-08-31 23:53:20
360
原创 顺时针打印矩阵
这是leetcode上面的一道题,自己试着做下:def print_array_spirally(array): row = len(array) column = len(array[0]) res = list() directions = [[1, 0], [0, 1], [-1, 0], [0, -1]] visited = [[False for i in range(column)] for j in range(row)] i, j, d.
2021-05-18 23:01:00
186
原创 在Mac上安装AutoCompleteMe
整个安装过程实在太痛苦了,所以这里记录下。Install CMake(brew install cmake)cd ~/.vim/bundlegit clone https://github.com/Valloric/YouCompleteMe.gitcd ~/.vim/bundle/YouCompleteMegit submodule update --init --recursivemkdir YouCompleteMe/ycmbuildcd YouCompleteMe/ycmbuild.
2021-04-18 21:15:41
281
原创 用Jpeg来生成ASCII文本
用一张Jpeg图片来生成一个由特殊符号组成的文字,但是远看却是原来那个jpeg图片的内容,如下图这样:也可以自己设置组成图案的元素:std::string among = "@%#Oo*+=-:.";就是根据颜色的深浅设置符号详细的代码在GitHub上,有愿意的可以自己尝试玩玩。Jpeg2ASCII...
2021-04-06 23:08:50
183
原创 光线追踪(RayTracingInAWeekend)
最近看到一个教程是讲RayTracing的,按照书中的实现方式自己动手敲了一遍,对光线追踪里面的一些原理有了更深入的了解,特别是当编译的时候会遇到各种问题,一遍一遍地Debug那种过程是相当痛苦的,当终于发现问题并且解决了的时候,那种如释重负的感觉外人很难体会。里面定义了个vec3的类,用来描述整个RayTracing的光线的传递折射反射以及颜色等信息,里面也对相机和焦距也做了实现。最后实现的效果还不错,具体的代码在github上:RayTracingInAWeekend...
2021-03-30 21:35:45
500
原创 数据结构与算法的一些学习
最近在看下面这四本书,前两本已经看完了,其中Grokking Algorithms里面讲的东西比较好理解,从array, linked_list, hash table, tree, graph等等常见的数据结构都讲了,而且里面讲到一些常用的递归算法,贪婪算法,quick-sort等等,通俗易懂,而且动用Python实现了一遍,但是看代码就能学到不少东西,后面再继续阅读剩下的三本书。Computer Science Distilled - https://amzn.to/39jYZ0SGrokking
2021-02-28 23:49:42
116
原创 2020最后一次加更
这个月一直忙项目上的事,少有时间来写,最近看了GAMES101的课程,讲得真好,里面有些内容同事也讲过,但听人家讲真有种拨云见日的感觉,看完这一系列视频,对图形学能有个基本的轮廓,而且里面的作业也设置的非常好,自己也在做的过程中,只是比较慢,作业也放在了Github上了,欢迎同仁拍砖。https://github.com/chuckbruno/GAMES101GAMES101作业...
2020-12-31 21:32:28
116
原创 用Visual Studio为自己的应用程序设置setup.exe文件
首先下载安装Installer这个扩展包安装完就会在创建项目里选择setup project然后创建两个项目,一个是AppSetup,一个是Setup。AppSetup就是个简单的窗口,拖拽几个控件,如图可以给AppSetup这个项目设置个图标然后build一下AppSetup,再来进一步设置setup的项目在Application Folder上点击右键,选择Add——>项目输出选择AppSetup项目的主输出,点击确定然后给主应用程序添加个快捷方式,如下图创建.
2020-11-08 16:20:42
2288
原创 UE的一些学习心得
最近公司在讲UE的内容,自己也乘此机会学习下,看了asset manager的内容,后面有看了导入sk骨骼和st骨骼,最后在UE里将二者结合起来。
2020-10-31 23:51:08
700
原创 QGraphicsScene的坐标矫正
在用一个QGraphicsScene做一个工具发现他的坐标我们经常用到的那样,而是原点在左上角的位置,正x方向朝右,而正y方向是朝下的,这就需要做两个工作,一个是将坐标原点放到试图的正中间而不是左上角,第二个将y轴朝上,而不是朝下,这样的话就更符合我们一般人对坐标系统的认识,关键里面的item的值,更符合我门熟悉的那个坐标系统。将坐标原点会中心的代码如下:class ItemGraphicsScene(QtGui.QGraphicsScene): def __init__(self):
2020-09-30 23:10:03
1714
原创 实现单例的两种方式
第一种是用的元类实现class Singleton(type): _instances = {} def __call__(cls, *args, **kwargs): if cls not in cls._instances: cls._instances[cls] = super(Singleton,cls).__call__(*args, **kwargs) cls.x = 5 return cls._
2020-08-29 19:40:01
140
原创 使用Multiprocessing弹出多个窗口
最近搞个分析Excel数据的东西,从py转成exe之后,运行的时候会弹出多个窗口,而且还关不掉,关掉就又弹出来了,直到达到某个固定的个数的时候才停止,后来查了下是用了multiprocessing模块的问题,但是这个模块在py文件模式下运行的非常好,没问题,只是在exe模式下需要加个multiprocessing.freeze_support()才行,这样转成exe之后也不会弹出多个窗口了。if __name__ == '__main__': multiprocessing.freeze_supp
2020-08-29 10:45:01
747
原创 用Matrix在Maya2020里实现对offsetParentMatrix约束的切换
这里写自定义目录标题在Maya2020里有了offset parent matrix 属性,这样用matrix对物体做约束的时候就可以少很多节点,且结构更清晰简洁,那么下面就实现下这个功能。首先创建两个locator,一个小球,用来模拟这个小球收到这两个locator的约束,而且是可以切换约束,即可以受locator1约束,也可以受locator2约束。既然是用matrix来做约束,那么就再创建两个multMatrix节点,用这两个matrix节点的主要目的是做带有便宜值的matrix约束,就类似于
2020-07-20 23:24:56
1099
原创 PySide实现各种形状的按钮
看PySide的示例代码的时候,有个时钟的案例,最后它将那个时钟设置成一个圆形,这顿时让我很感兴趣,细看代码,就是用了asMask的方法,QWidget这个类里有这个方法,共有两种使用方法,如下:于是找了张图片作为mask试试,实现下各种形状的按钮,如下图,有mask的时候是这样的无mask的时候是这样的其实这里主要用到了重写resizeEvent,以及最后用图片作为个maskself.setMask(self.mask_pixmap.mask())主要代码如下:from PySide2
2020-07-12 09:10:08
2024
2
翻译 QPainter的使用详解
这是篇翻译的文章,翻译的过程中自己也亲自敲下代码,更深入地了解QPainter的功能。我们不论是用Qt画图或者是显示文字都得用到QPainter。QPainter首先用QPainter来画一条直线import sysfrom PyQt5 import QtCore, QtGui, QtWidgets, uicfrom PyQt5.QtCore import Qtclass Ma...
2020-03-22 21:46:36
1592
原创 贝塞尔(Bezier)曲线节点
在网上看到一个bezier曲线的公式,那就用Maya的节点来实现下,看看效果,具体公式如下图:这个是二维的,三维的花再加个z轴向就行,import maya.OpenMayaMPx as OpenMayaMPximport maya.OpenMaya as OpenMayaclass BezierCubic(OpenMayaMPx.MPxNode): kPluginNode...
2020-03-14 16:26:30
1011
原创 Python搭配Everything来搜索文件夹里的内容
如果要从一个文件夹下找到自己需要的内容,以前是用os.walk来完成,但后来发现那样效率太低了,于是可以用Everything先搭建个服务器,然后再用python调用Everything的Python Api来获取自己需要查询的内容,最关键的时间这样的效率要比之前的高很多。安装Everything搭建服务器,这里不再重复,可以参考下面的链接Everything快速搭建HTTP文件服务器下面说...
2020-02-29 16:25:54
3376
原创 艰难时刻,共克时艰。
在回来的路上,高铁上碰到碰到一对夫妇,是从别的车次改签到这个车次的,上来后说小孩刚出生得了一种病,需要去上海复旦大学儿童医院去,那个男的打120联系医院,医院又给了他一个电话让他打那个电话,但是那个男的打过去好像是有什么问题,不行,然后列车长这时自己打电话联系医院了,并且说了几点到,哪节车厢,让医院的救护车过来接,最后安顿那对夫妇不要着急,给他们改签了票,为高铁上的工作人员点赞。...
2020-01-31 22:21:47
1014
原创 Maya2020 Transform Offset Parent Matrix
Maya2020里有个新功能就是所有的transform节点上都多了个Transform Offset Parent Matrix属性栏,通过这个属性,不论绑定和动画都能剩不少事,不如动画原来做约束时,既要保持约束效果,由想要让被约束的物体有自己的动画,那么这样就很简单了,只需要调节这个新属性就行,不需要向原来那样建个空组之类的,这也是我最喜欢的一个改变,game-changing feature...
2019-12-31 17:59:37
767
1
原创 覆盖Maya自身的脚本
在项目里有个脚本需要覆盖Maya自身的同名脚本,一般来说手动将这个脚本拖到Maya里,艺术家在使用的时候就会调用到我们自己的脚本,但是总不能每次都让艺术家们手动拖脚本吧,于是想着看能不能放到中心化里面,艺术家每次打开就已经配置好了,一个关键点就是我们自己脚本的路径要放到Maya的脚本路径前面,这样Maya在调用的时候就会调用我们的,而不是Maya自身的了。import oscentralize...
2019-12-06 18:06:04
302
1
原创 健身减脂
今天写点别的东西——健身,自己健身是源于一个契机,就是公司建了个健身房,让我们工作之余可以锻炼下,缓解工作的压力,但是我一直没去,对那些器械也没兴趣;偶尔又一次机会和一个同事去打乒乓球,在换人之际,自己和另外一个同事练了练,觉得还蛮有意思,当时我正脖子疼得厉害,然后就这样跟着那个同事活动活动之后,感觉好多了。平时下班之后自己又去了几次,每天锻炼大概四十分钟左右,再回去加班,感觉挺不错的,就这样在十...
2019-11-30 21:26:42
476
原创 在Motionbuilder里做camera rig——relation约束的问题
在Motionbuilder里做了个camera rig方便他们调节相机和一些shake的属性,只能用relation来完成,但在最后将中间计算的数值要和相机的属性链接的时候,发现链接上之后,原来的父子关系就失效了,也就是原来相机的父物体不能再控制这个相机了,只能是relation的sender物体才行,自己查了下文档发现,在连接的相机的时候应该用local translation和local r...
2019-11-28 15:23:07
1566
5
原创 git blame 的用法小记
在debug的时候,为了查找是谁改得某个文件或者某一行,这时就用到git blame这个命令了,用法最常用的就是git blame <filename>git blame -L start,end <filename>例如:git blame database.pygit blame -L 10,20 database.py //表示查看10-20行的修改历史...
2019-11-27 16:08:56
3703
1
原创 Python的__new__用法
用__new__ 主要是想改变原来一些类无法实现的方法,比如有个列表,我想让它按照我的想要的方式转换成字符串,那么就可以这样写class ListToString(str): def __new__(cls, fruit_list): fruit_string = ', '.join(fruit_list) return super(ListToStr...
2019-11-23 15:29:20
248
原创 git忽略一类文件(git ignore)
在用git的时候自己用json文件设置了写配置信息,但又不想让git追踪这个配置json,于是就在.gitignore文件里添加了*.json表示忽略这种json文件,但是在用git status查看的时候居然还能追踪到,于是自己查了些资料,原来是自己以前已经将这个json文件commit上去了,所以尽管添加了忽略json的设置,但git仍然能追踪到,要想彻底让git不再追踪的话得需要在git的缓...
2019-11-23 10:37:25
616
原创 一个非常好看的标签(Tag)搜索框
工具需要一个根据用户输入的tag来搜索的功能,借鉴了下别的软件的模式,于是诞生下面我的这个,现上动图了。具体的实现方式如下:# -*- coding: utf-8 -*-from PySide import QtGui, QtCoreimport sysfrom functools import partialclass TagBar(QtGui.QWidget): d...
2019-11-16 21:25:25
2307
原创 bat运行的时候不弹出黑框框
首先得创建个.vbs的文件,在这个vbs的文件里进行设置,比如有个bat的名字叫foo.bat,然后在vbs里的代码为:Set ws = CreateObject("Wscript.Shell") ws.run "cmd /c foo.bat",vbhide然后再双击这个vbs文件,就可以不弹出那个黑框框了。...
2019-10-31 23:46:58
1698
原创 从Max里导出相机数据
最近在公司碰到个问题,就是从Max里导出相机到Maya里,不论是导出fbx还是abc,在Maya焦距的大小和Max里怎么都对不不上,于是只能在Max里逐帧将相机的焦距的数值记录到一个文件里,然后再回到Maya里重新设置一遍焦距,总算暂时解决了生产中的任务,不知各位大佬还有更好的解决办法没,下面是我在Max里的实现方法。fn getSelName=( for s in selection d...
2019-09-30 22:51:40
1290
原创 用getattr刷新节点的数据
在MayaBatch模式下,有时候一个节点的某个属性被另一个节点的某个属性链接了,比如驱动关键帧,最典型的就是模型组的现实和隐藏。有时候我们设置了驱动物体的那个属性,在前台的Maya上,被驱动物体的那个属性也会随之发生变化,但是在linux上的Mayabatch模式,却并没有发生变化,这时如果出缓存这个属性就可能写出的时候是错误的,如,我们通过控制器的某个属性来控制某些模型的显示和隐藏,但此时如果...
2019-07-31 23:05:36
227
原创 Linux下解决Maya通道栏乱码问题
公司刚切Linux系统的时候,很多人出现了Maya通道栏乱码的问题:这样调动画都很不方便,很多时候他们不得不重开Maya才有可能好转,有时候还是不行,于是自己查了下文档,在Maya的官方帮助里有详细说明,下面说下具体的解决方案,就是在启动你的Maya之前需要加个环境变量,下面用的这种方式是.sh方式启动Maya的设置方式,如果只是本地的话,那么在maya.env文件里加个LANG=en_...
2019-07-20 18:47:49
888
原创 用Matrix节点来实现约束功能
为什么要用Matrix节点实现约束功能呢?可以简化你的节点之间的层级结构可以提高节点运行效率实现方式这里就拿最简单的两个物体来演示,链接方式如下图,如果没有decomposeMatrix节点的话,需要家在MaxtrixNode插件。首先从cube出发,用它的worldmatrix和multMatrix节点的matrix in相连,然后再用matrix sum和decomposeMat...
2019-06-02 11:06:44
914
原创 Voxelization——体素化模型
上周部门内部进行分享知识讲座时讲到一个词Voxelization,也就是体素化,也就是用某些东西充满一个物体的内部,如下面这两张图,用小方块充满圆环和锥体。其主要算法也有多种,我这里采用的是用boundingbox来切割物体的方法,如下图:就是先求出一个模型的boundingbox,然后以一定的step对boundingbox的长宽高进行切割,然后从这些黄色的交点,按照某一方向,向模型打...
2019-05-02 20:06:00
6437
3
原创 给MarkingMenu设置自定义的快捷键
承接上篇,有时候我们需要设置自己想要的快捷键,而非Alt、Shift、Ctrl这类快捷键,这就是这篇要谈的东西。首先我们需要给我们的MarkingMenu建runTimeCommand,就是这种东西。建完这个之后,就可以设置两个快捷键,一个是press,一个是releasepress的时候,命令是显示我们的markingmenu;当release的时候,再把我们markingmenu删掉...
2019-05-02 16:45:43
549
原创 在Maya里用脚本设置MarkingMenu
有时候,我们将一些经常用到的重复性高的命令设置成快捷键以提高我们的效率,但我更喜欢用MarkingMenu,这样只需要甩鼠标就可以了,但是Maya默认的MarkingMenu只能通过UI来设置,如何通过脚本来实现,自己研究了一番,终于实现了,下面就具体说明下,import maya.cmds as cmdsimport pymel.core as pmMEDIOCRE_MENU_NAME...
2019-03-31 12:15:49
813
原创 导出FBX修改namespace
在公司给游戏部门弄一个导出fbx的插件,导出的时候需要将namespace去掉,这样方便他们导入UE里面,以前的操作是将Maya里的reference全部解除掉,变成导出的模式,这样去掉namespace后再导出fbx,但是这样呢有个问题,就是当一个文件里有相同的rig的时候,那么变成导入的时候就会多个后缀1,2之类的;而且另一方面将源文件也给破坏了,动画师如果再修改的话还得重新开文件,于是寻找下...
2019-03-24 19:54:50
991
2
原创 如何将py文件编译成pyd使其能在Maya环境下运行
因为种种原因,有时候我们需要将py文件编译成pyd文件,但在Maya的环境下,如果是用官方的Python编译出来的pyd肯定不能用,包括PyQt,如果想在Maya环境下运行也是需要特殊编译下;下面就以Maya2016位例来演示下实现方法。与Maya2016对应的VS是2012,具体对应版本可以查看PluginWizard里面的说明,所以需要安装VS2012,这是后面编译pyd所必需的。编译之前...
2019-02-16 11:26:19
1911
原创 再玩Shotgun的Toolkit
最近又重新配了下Shotgun的Toolkit,发现和原来相比,变化挺大的,现在成了每配一个项目都要将App拷贝导单独的项目里面,而不是想原来那样几个项目公用一个App,自己第一次修改的时候,发现怎么也不生效,Debug了半天才发现,原来那个项目的App根本指得就不是我修改的那个,而且连配置文件yaml结构都变了,但是感觉不是变得简单合理,而是更加复杂了,这是Shotgun的一贯风格。最让自己想不...
2018-12-30 17:28:20
534
1
原创 Linux下用ffmpeg转H.264编码的视频
最近公司的制作电脑都切成Linux系统了,但Maya有个问题就是没有了h.264编码,这就让原本只有几M的拍屏变成几十M了,最后想方设法用ffmpeg转了下,确实小很多,清晰度基本不变。最主要的命令为:cmd = '%s -y -r 24 -i %s -vcodec libx264 -crf 18 -preset slow -tune animation -profile baseline -...
2018-12-02 10:53:17
1105
原创 After Effects 自动导入素材和分类的脚本
最近一个游戏项目需要用到AE做合成,可是渲出来的素材有那么多曾,艺术家自己一个一个往里导确实很费时间,于是给他们写了个自动导入素材的工具,并且根据背景和角色层自动打好组,创建文件夹,还创建了comp,将素材放进去,根据序列的长度来设置comp的长度,还能根据文件的名字给里面的comp命名,将文件命名规范,最后又加了个为艺术家自动设置输出路径和视频名字的功能。工具的界面如下:码如下:{ ...
2018-11-02 22:32:55
1458
Camera_shake.fbx
2020-08-08
MaxScript Essential . Max的脚本语言
2018-10-15
企业物流信息系统的总体构思
2010-01-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人