Mr. Kin's Blog

计算机知识分享/软件应用讲解

1   数学计算

  • 对于指数函数来说底数不能为负数,而对于代数运算来说却可以为负数。因为n总是表示正整数,底数为负数是可以的,这个式子仍然是有限次代数运算的极限
  • 乘除法的计算本质:计算过程中的错位相加是为了保证各行的小数点位置相同,实际就是保证各个数字的权重相同。

2   生活琐事

当花费大量时间却无法解决一个问题时,若非紧急状态,建议先将该问题放一边。等到放松或者忙完另外一件事情甚至于明天再重新去思考解决这个问题。

3   生活记录

  • 灭蟑螂:洗衣服+饭+白糖。
  • 去打印店,一定得输出PDF再打印。
  • 肠粉容易导致胃胀气。
  • 不要买大豆油,加热有腥臭味。买花生油。
  • 湖南人fh不分,弗兰银/湖兰人/胡建人。
  • 出门在外吃饭,看大货车司机。
  • 学生票要取纸票,得刷磁条才能享受优惠,否则检票时会面临补票的问题。
  • 四六级口语分两天,笔试一天(上午四,下午六)。
  • 2021花呗弹窗说需上报征信。
  • 京东白条的注销,需要下载京东金融白条>设置>账户安全>注销白条用户>继续注销,或者直接在京东金融客服,输入注销白条,可以直接跳转。
  • 信用卡(透支信用贷款),小额消费贷款(多笔记录不利于征信)

4   医学

  • 睡眠一定要规律,否则生物钟不好调整适应,会造成人体免疫力下降。
  • 关于外伤伤口的处理:生理盐水清洗伤口即可,剩下等身体自动修复。消毒可以用碘伏。P.S.切忌使用紫药水,不仅致癌,还会形成结痂无法观察伤口。
  • 烫伤疼痛明显:冷水冲洗30分钟。

4.1   药品清单

  • 蚬壳胃散-海螵蛸
  • 小柴胡冲剂
  • 复方黄芩片-肇庆新湖制药
  • 复方穿心莲-广州白云山和记黄埔中药
  • 氯芬黄敏片-广州白云山明兴制药
  • 复方氨酚烷胺片(感冒)
  • 维C银翘片-国药集团德众(佛山)药业有限公司
  • 腹可安片-广州白云山一药业
  • 正露丸(喇叭丸)-大幸药品
  • 桂林西瓜霜-桂林三金药业
  • 冰硼散(微毒性)
  • 维C片
  • 维B片
  • 盐酸小襞碱片
  • 枸地氯雷他定片-扬子江药业集团
  • 脾氨肽口服冻干粉
  • 攻肤之王-广州泽上堂生物科技有限公司

1   基础

ffmpeg -i input.avi -metadata key=value -codec copy output.avi
ffprobe "file" #查看metadata

1.1   查询命令

1
2
3
4
5
ffmpeg.exe -h -> help.txt # 打印帮助文件
ffmpeg -h encoder=libx264
ffmpeg -hwaccels # 查看支持的硬件加速选项
ffmpeg -codecs | grep cuvid # 查看cuvid提供的GPU编解码器(grep为Linux命令)
ffmpeg -f lavfi -i nullsrc -c:v nvenc -gpu list -f null none_output (-hwaccel_device N 和 -gpu N)

1.2   硬件编码

1
2
3
4
5
6
-c:v h264_nvenc -rc:v vbr_hq -cq:v 19 -b:v 2500k -maxrate:v 5000k -profile:v high
ffmpeg -hwaccel cuvid -c:v h264_cuvid -i <input> -c:v h264_nvenc -b:v 2048k -vf scale_npp=1280:-1 -y <output>
ffmpeg -vsync 0 -hwaccel cuvid -c:v h264_cuvid -i input.mp4 -c:a copy -c:v h264_nvenc -b:v 5M output.mp4
-hwaccel cuda -hwaccel_output_format cuda
ffmpeg -vsync 0 –hwaccel cuvid -c:v h264_cuvid –resize 1280x720 -i input.mp4 -c:a copy -c:v h264_nvenc -b:v 5M output.mp4
ffmpeg -r 30 -f image2 -i %4d.jpg -r 30 -c:v h264_nvenc -profile:v high -level 5.1 -preset slow -rc:v vbr_hq -cq:v 19 -b:v 2500k -maxrate:v 5000k ../output.mp4

2   实战案例

2.1   合并多个视频文件

1
2
3
4
5
6
ffmpeg -f concat -i filelist.txt -c copy output.mp4
# filelist.txt
# file '1.flv'
# file '2.flv'
# file '3.flv'
# file '4.flv'

3   常见知识点

  • yuv420p的p代表planar
  • k和K都是表示$10^3/2^{10}$,K之后的只有大写,比如M表示$10^6/2^{20}$(详见Expression Evaluation
  • bufsize配合maxrate参数使用可控制编码时的码率波动,例如264的cbr恒定码率编码中,同时设置b:v maxrate minrate bufsize(前三个都是设置为1M,bufsize设置为50k,最后编码出来的码率波动最小996kbit/s,1001kbit/s)。bufsize is the "rate control buffer",即码率控制缓存。作用是每次达到bufsize大小,都是计算并调整到average平均码率。
  • filter chain之间的filter用分号,普通的filter之间用逗号
  • aac编码:网络视频128k;高质量192k

4   常见错误/警告

4.1   时间戳问题

常见于 Non-monotonous DTS in output stream

完美的解决方式暂未找到,网上的解决方法基本为:先转为 mts 文件,后转为 mp4。(本质是重新编码,确实可以解决时间戳错误,但也会劣化音质和画质。)

4.2   deprecated pixel format used, make sure you did set range correctly

This is just a warning, not an error. You can safely ignore it when using ffmpeg from the command-line, and you don't have to fix anything.

The warning occurs when converting from a yuv420p source to JPEG, which makes ffmpeg choose yuvj420p as output format. That format is required for writing files with the mjpeg encoder.

These two pixel formats have different color ranges: the former is from 16–235, which is "limited range" (also called "MPEG" range), the latter defaults to 0–255, which is "full range". The warning is meant for using FFmpeg as a library in your own code (like here). See also the comments on this question.

1   推荐资源

2   开发技巧

  • cycles API直接查看cycles源码,properties.py
  • blender -r -R注册blend后缀名文件,小r为静默注册-v显示版本
  • blender排错cmd工具:blender_debug_log.bat

用户偏好设置-开发额外选项+Python工具提示+工具提示

开启「开发额外选项」后,右键UI组件,可以查看源代码。

在寻找UI组件所在类目时,可查看Python工具提示信息。

在查找一些操作命令时,可以在blender里操作后在控制台看执行的语句。活用blender控制台进行调试。

live edit状态去除bl_info(meta元数据),其余状态一样

Operator 的 bl_label 的 translation context 必须为 Operator。
Operator 的 bl_description 的 translation context 必须为 *。

blender主程序目录下,有debug.cmd工具可以用于生成blender崩溃的日志。

3   常见API总结

4   插件升级功能

5   常见问题总结

5.1   调用operator出现poll()函数报错

在Blender的插件开发中,业务逻辑功能若能避免使用bpy.ops函数就尽量避免使用,因为大量使用ops函数不仅影响性能,而且还可能引发poll函数RuntimeError异常。二次代码开发,更推荐使用Blender原生API类接口实现业务逻辑功能。

问题现象:RuntimeError: Operator bpy.ops.object.empty_image_add.poll() failed, context is incorrect

问题原因:Blender代码设计中,很多operator都有一个poll函数专门用于检测鼠标指针是否在一个有效的窗口区域或者检测当前物体是否在正确的模式中(例如编辑模式,权重绘制模式),如果poll函数返回失败值的话,就会引发RuntimeError异常。

解决方法:
context override的代码实现,如下代码适用于所有blender版本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
class ContextExecuterOverride:
def __init__(self, window, screen, area, region):
self.window, self.screen, self.area, self.region = window, screen, area, region
self.legacy = not hasattr(bpy.context, "temp_override")
if self.legacy:
self.context = bpy.context.copy()
self.context['window'] = window
self.context['screen'] = screen
self.context['area'] = area
self.context['region'] = region
else:
self.context = bpy.context.temp_override(window=window, screen=screen, area=area, region=region)

def __enter__(self):
if not self.legacy:
self.context.__enter__()
return self

def __exit__(self, exc_type, exc_value, traceback):
if not self.legacy:
self.context.__exit__(self, exc_type, exc_value, traceback)
return self

class ContextScriptExecuter():

def __init__(self, area_type, ui_type=None, script=None):
self.area_type = area_type
self.ui_type = ui_type if ui_type else area_type
self.script = script

def script_content(self, override):
self.script(override)

def execute_script(self):
window = bpy.context.window
screen = window.screen
areas = [area for area in screen.areas if area.type == self.area_type]
area = areas[0] if len(areas) else screen.areas[0]
prev_ui_type = area.ui_type
area.ui_type = self.ui_type
regions = [region for region in area.regions if region.type == 'WINDOW']
region = regions[0] if len(regions) else None
with ContextExecuterOverride(window=window, screen=screen, area=area, region=region) as override:
self.script_content(override)
area.ui_type = prev_ui_type

具体context override代码的使用例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# bpy.ops.object.empty_image_add()函数例子
ContextScriptExecuter(
area_type="VIEW_3D",
script=lambda override: (
bpy.ops.object.empty_image_add(
override.context, filepath=blueprint_front
)
if override.legacy
else bpy.ops.object.empty_image_add(filepath=blueprint_front_path)
),
).execute_script()
# bpy.ops.view3d.view_axis()函数例子
ContextScriptExecuter(
area_type="VIEW_3D",
script=lambda override: (
bpy.ops.view3d.view_axis(override.context, type="FRONT")
if override.legacy
else bpy.ops.view3d.view_axis(type="FRONT")
),
).execute_script()

6   参考文献

[1] 「切换语言」使用手册 - Blender 插件,参考文献小节[EB/OL]. https://mister-kin.github.io/works/software-works/toggle-language/#%E5%8F%82%E8%80%83%E6%96%87%E7%8C%AE.
[2] poll() failed, context incorrect? - Example: bpy.ops.view3d.background_image_add()[EB/OL]. https://blender.stackexchange.com/questions/6101/poll-failed-context-incorrect-example-bpy-ops-view3d-background-image-add.
[3] Context override[EB/OL]. https://b3d.interplanety.org/en/context-override/.
[4] Blender 插件开发 技巧/误区/指南/笔记[EB/OL]. https://blog.csdn.net/qq_36288357/article/details/143528487.

1   精确建模

  • N面板可以控制物体尺寸查看,查看当前模型的尺寸。缩放到精确尺寸后,ctrl+a应用变化。
  • object mode变换可能会导致系数变化,Ctrl+A可以重置缩放系数,全部归并至系数1(以当前尺寸为基础)
    • (edit mode不会改变物体属性,只是改变物体内部的点线面分布)不推荐在物体模式下进行单轴向缩放,旋转还是会考虑在物体模式
  • 建模后添加细分修改器,右键平滑

注:系数为负数时,从blender导出资产到UE4会导致模型法线变反还是模型变黑?

2   SVG转3D网格

  1. 切换到顶视图-7键。
  2. 菜单>文件>导入>SVG
  3. 缩放视图找到SVG。
  4. 右键set origin,调整“原点”至物体中心。
  5. shift+s键对齐“原点”至世界中心
  6. 选中并缩放至合适大小。
  7. 右键convert to,转换到Mesh。
  8. 选中网格物体,TAB键进入“编辑模式”。
  9. A键选中所有网格。
  10. 切换到侧视图-3或1键。(按住Ctrl时为视图反方向)
  11. E键挤出面。
  12. TAB键回到“物体模式”。

3   灰尘例子动画

无特殊说明,则都是在粒子标签内操作。

  1. 创建合适的立方体(粒子场)
  2. 选择立方体,属性编辑器>粒子标签>新建粒子系统
  3. 粒子类型>发射体;发射>源>发射源>体积
  4. 创建灰尘物体模型
  5. 渲染>渲染为>物体(此为单个效果,用集合来实现多个),物体>选择灰尘物体模型
  6. 渲染>缩放>数值调整;缩放随机性>1
  7. 1键切换到前视图,ctrl+alt+0并左击相机视角边框处以选中相机,按G调整相机视角;属性编辑器>相机属性>镜头>焦距>数值调整。
  8. 启用旋转功能>坐标系轴向>normal;随机>数值调整;相位>数值调整;随机相位>数值调整
  9. 选中立方体,属性编辑器>材质>表面>移除材质,材质>体积>原理化体积>密度调0.14
  10. 属性编辑器>世界属性>颜色调至黑色(除去环境亮度)

4   无限旋转循环

物体属性>旋转(选一个方向)>输入「#frame/30」

# 符号,blender会将其判为驱动器表达式。

5   VSE无限循环片段

  1. shift + D 复制并对齐片段
  2. shift + R 重操操作

政治、英语、数学这三个公共课是全国统考,专业课只有法硕、农学、教育学、心理学、历史学、西医综合、计算机是全国统考,其他的都是学校自主出题。

1   关键时间点

  • 准考证打印:12/18-27
  • 考研初试:12/25-26(8:30-11:30,14:00-17:00)
    • 25:政治|外国语
    • 26:业务课1(数一)|业务课2(408)

2   考试及试题信息

2.1   数学一

  • 试卷情况:分值 150,考试时长 180min。
  • 内容占比:56% 高等数学(微积分),22% 线性代数,22% 概率论与数理统计。
  • 题型结构:
    1. 单项选择 10 道,共 50 分
    2. 填空题 5 道,共 30 分
    3. 解答题(含证明题)6 道,共 70 分

2.2   英语一

  • 试卷情况:分值100,考试时长180min。
  • 内容占比:词汇(5500+附表词汇);语法(基本熟练地运用基本的语法知识)。
  • 题型结构:
    1. 英语知识运用(10分):20道完形填空(四选一):1篇文章(240~280词),词汇、语法和结构。
    2. 阅读理解(40+10+10分)
      1. 20道多项选择(四选一):4篇文章(共约1600词),理解主旨要义、具体信息、概念性含义、进行判断、推理和引申,根据上下文推测生词词义。
      2. 5道选择搭配:1篇文章(500~600词),理解连贯性、一致性等语段特征和文章结构。
      3. 5道英译汉:1篇文章(400词,5个划线部分约150词),理解复杂概念、结构。
    3. 写作(10+20分)
      1. 一个应用文写作(规定情景:信函、备忘录、报告等):100词。
      2. 一个短文写作(描述性、叙述性、说明性、议论性文章):160~200词。

2.3   政治

  • 试卷情况:分值100,考试时长180min。
  • 内容占比:24% 马原,30% 毛中特,14% 史纲,16% 思修,16% 时政和当代。
  • 题型结构:
    1. 单项选择 16 道:16 分
    2. 多项选择 17 道:34 分
    3. 材料分析题:50 分

2.4   408专业课

  • 试卷情况:分值150,考试时长180min。
  • 内容占比:数据结构(45分),计算机组成原理(45分),操作系统(35分),计算机网络(25分)。
  • 题型结构:
    1. 单项选择 40 道:80 分
    2. 综合应用题:70 分

3   学习资料推荐

  • 数学:线代李永乐、高数汤家凤/武忠祥,概率王式安。
  • 政治:《精讲精练》《1000题》《八套卷》《四套卷》《风中劲草》《模拟卷》

R.I.P