自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

开发游戏的老王

兼职游戏开发者,全职大学教书匠

原创 3DCoat重拓扑:Strokes工具

肺炎流行的日子,宅在家里试用各种重拓扑工具,目前来看倒是乌克兰大炮3DCoat的重拓扑工具用着最顺手 基本用法 选择Strokes工具画“井字”,然后按Enter生成网格,也可以自动生成环!虽然比RetopoFlow的Contour和TopoGun的Tubes多一些步骤但是更好控制一些。 ...

2020-01-30 21:18:54 573 0

原创 最好的新年礼物:Godot Engine 3.2正式版!

虽然用Beta版已经有些日子了,但还是非常期待这个Release版的到来,对我来说最期待的有两点: 对FBX的支持 Skin系统:不同模型可以复用同一个骨骼(Skeleton)了 接下来继续等待Godot 4.0 对Vulkan的支持 ...

2020-01-29 22:54:23 712 0

原创 TopoGun 2:快捷键

视图类操作 操作 快捷键 说明 旋转视图 Alt + 左键 缩放视图 Alt + 滚轮 平移视图 Alt + 右键 参考最大化 A 选区最大化 F 工具切换 工...

2020-01-29 18:37:12 1603 0

原创 工作流体验:雕刻+自动重拓扑+Substance Painter

建模+雕刻:Blender 自动重拓扑:Tesselator 1. 建模 2. 雕刻 3. 重拓扑 三角面 2K

2020-01-28 21:07:26 386 0

原创 动画练习:Push

总觉得有哪里不对劲

2020-01-27 10:34:31 276 2

原创 Akeytsu:刷权重时如何选择一个孤立的岛

Akeytsu版本2019-4-5 虽然没有类似Blender中Ctrl + L 的一键全选,也是有办法的。 1. 先选择该岛上的一个或多个顶点 2. 按住数字键盘上的+,直到全部连接的顶点全部选择进来 ...

2020-01-26 20:50:36 206 0

原创 动画练习:Punch

轮廓(出拳时左右腿动作反了,后面纠正过来了) 2.细化 3. 纠正了出拳时左右腿姿势

2020-01-25 16:56:27 170 0

原创 Akeytsu:Stacker

参考《Akeytsu Documentation:Stacker Window》 官方的说法:Stacker是Akeytsu特有的关键帧管理器,其灵感来源于传统动画的X-Sheet,Stacker需要和时间轴协同工作。 一个Stacker就是骨骼中一部分骨头的集合或者组,你可以新建许多St...

2020-01-24 18:01:47 206 0

原创 Akeytsu:添加IK(Inverse kinematics)控制器和RF(Reverse Foot)控制器

Akeytsu 版本 2019-4-5 注意 在当前版本中添加IK和RF的步骤几乎相同(由于Akeytsu官方的视频教程没更新,导致我一致以为添加RF有 BUG。) 在老版本Akeytsu中添加IK和RF要先蒙皮,新版本中已经不需要了,改了算法? 添加IK 1. 加选IK...

2020-01-23 05:49:45 345 0

原创 Akeytsu:Paint&Check常用操作及技巧

Paint&Check模式 命令 快捷键 说明 权重画笔(Skin Painter)开关 A 左键添加权重右键移除权重 强制视角导航 V 开启权重绘制以后需要按住V才能导航视角 重置数值 X 重置当前选定的骨骼形变 ...

2020-01-22 12:00:00 179 0

原创 FBX工作流:从Akeytsu导出一个标准UE4/UNITY骨骼到Blender

Akeytsu版本2019-4-5 Blender版本2.81a 1. 新建半个UE4骨骼 (Unity同理) 2. 选择半边 3. 复制另一半 从Akeytsu导出FBX文件 4. 导入到Blender时,勾选自动骨骼坐标系 ...

2020-01-21 15:02:28 676 0

原创 Godot Engine:3D动画loop无效的问题解决

问题描述 已经在AnimationPlayer中将一个动画片段设置为loop,在编辑器中也可以看到它正常循环,但是当场景运行起来以后,就不循环了 解决方法 查看一下层级图会发现,除了场景的根节点以外其它节点都是灰色的,animation_player也是灰色的,灰色意味着修改不会保存,这是因为...

2020-01-21 10:12:16 472 0

原创 Substance Painter:常用快捷键

为了和Blender体验一致,部分快捷键已修改《Substance Painter:如何把视图操作改为和Blender一致 》 视图类 命令 快捷键 说明 旋转视图 中键 非默认 平移视图 Shift + 中键 非默认 缩放...

2020-01-20 09:54:43 2104 0

原创 Substance Painter:如何去除启动时的TDR延迟低警告

[GPUIssuesCheck] 当前 TDR(GPU挂起恢复) 延迟很低:2。 在进行长时间计算的时候,Substance Painter会被OS打断。 查看 https://docs.substance3d.com/spdoc/gpu-drivers-crash-with-long-com...

2020-01-19 20:54:09 6061 0

原创 Substance Painter:如何把视图操作改为和Blender一致

镜头旋转和镜头平移 编辑->Settings->快捷键 顺便把绘制直线的快捷键改为Alt + 左 镜头缩放 Substance Painter镜头缩放本来就是鼠标滚轮,但是方向是相反的 编辑->Settings->通用 ...

2020-01-19 19:06:51 1150 0

原创 GDScript:UIFramework V1.0

比较简单粗暴的方法,没有缓存,即用即加载。先把 UI的tscn 都放到一个文件夹中,也可以指定子文件夹 extends Node export(String, DIR) var ui_dir:String func open(ui_name:String,msg:Dictiona...

2020-01-19 08:59:21 562 0

原创 Godot动画系统:动画状态机-添加动画节点(AnimationNode)

上文《Godot动画系统:动画状态机-AnimationTree(AnimationNodeStateMachine模式)基本设置与界面》介绍了AnimationTree的基本设置和界面,下面介绍一下如何为状态机添加动画节点和动画过渡 首先看一下AnimationPlayer节点,如上文所述,A...

2020-01-18 10:56:26 695 0

原创 GDScript:通用状态机V2.0

之前用GDScript写过一个通用状态机,见《GDScript:有限状态机(FSM)的实现》 最近又参考了GDQuest的开源项目godot-3d-mannequin重写了一版。个人觉得GDQuest的版本耦合度稍大,不便于后期维护,不过他使用节点树代替我之前版本的字典容器,是非常巧妙的设计,不但...

2020-01-17 20:43:22 631 2

原创 Godot动画系统:动画状态机-AnimationTree(AnimationNodeStateMachine模式)基本设置与界面

下文以3D环境为例介绍Godot动画状态机 我们已经导入了一个带有多组动画的模型,见《Godot Engine:Blender模型导入Godot自动生成的场景结构》 1. 添加AnimationTree 在Beefy场景中添加一个AnimationTree节点 当前AnimationTree的默...

2020-01-17 10:54:13 908 0

原创 Godot动画系统:动画状态机-目录

每天可用于写日志的时间比较碎片,下面的文章也比较碎片 Godot动画系统:动画状态机-引言 Godot动画系统:动画状态机-AnimationTree(AnimationNodeStateMachine模式)基本设置与界面 Godot动画系统:动画状态机-添加动画节点(Animati...

2020-01-16 11:06:47 467 2

原创 GDScript:match的语法糖真甜

之前写过一篇关于match的日志match语句,这几天研究某大佬的代码发现了一种match写法 使用范例 func enter(msg: Dictionary = {}) -> void: match msg: {"velocity": var v, "...

2020-01-15 15:36:20 365 3

原创 Object::has_method时间复杂度

GDScript中Object的has_method方法对应着 C++中的Object::has_method方法,之前想在每一帧都判断一下has_method,方法很优雅不过时间复杂度至少是O(n)还是算了吧,附上该方法C++的实现: Object::has_method bool Object...

2020-01-14 22:21:30 297 0

原创 GDScript:访问属性的两种形式

注意用[] 访问自身属性的时候前面要加self 范例代码 extends Node var test_property = "hello" func _ready(): print(name) print(get("name")) print(s...

2020-01-14 14:42:16 308 0

翻译 SpringArm类

继承关系 Spatial < Node < Object SpringArm是一个辅助类,常用于第三人称摄像机 属性 类型 属性名 默认值 说明 int collision_mask 1 float margin ...

2020-01-13 21:00:22 645 0

原创 Godot Engine:Blender模型导入Godot自动生成的场景结构

Blender中的层级结构 导入到Godot中的层级结构 Armature就是一个Spatial节点 Skeleton是一个Skeleton节点,对应着骨骼数据 Beefy是一个MeshInstance节点,对应着网格模型 AnimationPlayer是一个AnimationPlayer即...

2020-01-12 20:46:50 1090 0

原创 GDScript:使用EditorScript开发简单的编辑器脚本

EditorScript可以用于开发简单的编辑器脚本 它继承于Reference<Object,因此它不是挂到场景节点来执行的,可以直接通过脚本编辑器来执行它,比如如下脚本: tool #MyEditorScript.gd extends EditorScript func _ru...

2020-01-11 20:39:45 818 0

原创 Godot Engine:实用技巧之yield(owner, "ready")

前导知识: Node类:生命周期 Godot Engine:Parent和Owner GDScript:协程(Coroutine)(一)概念和使用范例 GDScript:协程(Coroutine)(二)简单粗暴实用至上的语法设计 从上面的文章中我们可以知道,Godot的生命周期函数_ready在...

2020-01-10 21:12:36 743 0

原创 GDScript:三目运算符

之前以为GDScript没有三目运算符,实际上它就在这里if x else func get_max(a:int,b:int) -> int: return a if a > b else b

2020-01-10 19:31:29 280 0

原创 Godot Engine:Parent和Owner

Parent 一个节点的Parent就是场景树上它的父级 Owner 一个节点的Owner可以是除自身之外的任意有效的父节点(parent)或者祖父节点(grandparent)即节点树上的上级节点 当存储一个节点时它所拥有的节点也都将会被保存 实验一:静态场景结构中默认...

2020-01-10 18:41:20 549 0

原创 Godot Engine:ProgressBar和TextureProgress

Godot自带了两个可以制作进度条或血条的节点ProgressBar和TextureProgress ProgressBar 是基础版的,有默认的矩形填充样式,参数也比较简单 TextureProgress 是高级版的,可以通过Under/Over/Progress即背景/覆盖物/进度条,来...

2020-01-09 19:59:58 376 0

原创 Godot Engine:用Sprite3D派生了一个Canvas3D类用于实现3D中的UI显示

Godot Engine中在3D世界显示2D的UI,需要用到Viewport,整个操作步骤还是有些麻烦,所以我用Sprite3D派生了一个Canvas3D类用于实现3D中的UI显示 代码如下 extends Sprite3D class_name Canvas3D export...

2020-01-08 18:28:12 483 0

原创 GDScript:关于派生类调用基类方法的一个注意事项

对于普通方法,在派生类中用"."+"方法名"的方式调用基类的方法,例如: 在基类中定义了一个do_something方法 #基类 func do_something(): print("parent:do something&qu...

2020-01-07 20:16:07 265 0

原创 Godot Engine:设置项目图标

修改前 在项目设置->常规->Application->Config中 修改后

2020-01-06 20:48:55 473 0

原创 GDScript:如何Disable一个Node

在Godot中,"disable"一个Node的最简单办法就是把它从场景树中移除,但不删除它,这样当我们想启用它的时候可以再把它加入场景树,注意把节点从场景树移除的时候,同时也将它从所在组里移除了,如果我们想把它保留到组里,可能就要用到下面的方法。 Node类本身没有hide...

2020-01-05 14:29:31 256 3

原创 Godot Engine:如何屏蔽一些无用的警告信息

类似这种回调函数的参数未使用的警告没有什么意义 W 0:00:00.591 The argument 'delta' is never used in the function '_process'. If this is intended, prefi...

2020-01-04 20:17:51 431 0

原创 Godot Engine:组(Group)和场景树(Tree)的几个要点

1. 组是由场景树维护的 这一点从获取组成员时要先获取场景树就可以看出 get_tree().get_nodes_in_group("group_name") 2. 节点离开场景树时会被移除所在组 我在场景添加了一个Node,并把它放到“UI”组中,然后反复将它从场...

2020-01-04 16:27:39 493 0

原创 GDScript:扫描一个目录并获取文件列表(可递归)

代码 把它写成一个静态方法,开箱即用 class_name FileHelper static func scan(path:String) -> Array: var file_name := "" var files := [] var dir := Dire...

2020-01-04 10:44:19 306 0

原创 Godot Engine:PhysicsBody中的Layer和Mask

先浏览一下Layer和Mask的设置,再解释其作用 在PhysicsBody的属性栏中可以看到它们的身影,Layer和Mask各有20个小“方块”,默认Layer和Mask的第一个“方块”是被选中的 点击右边的按钮 弹出一个层列表,每层前面有一个单选框,后面是层的名字 层的...

2020-01-03 15:36:10 293 0

原创 Godot Engine:屏幕振动效果的实现

extends Tween class_name CameraShaker export var camera_path : NodePath var camera :Camera = null func _ready(): camera = get_node_or_null(camer...

2020-01-02 20:34:35 790 7

原创 问题解决:Too many errors! 3 errors were dropped

错误信息 运行时报错 E 0:00:00:0666 Too many errors! 3 errors were dropped. <C Source> :32 解决办法 Godot Editor因为性能的原因对每一帧警告信息显示数量有限制 可以在项目->项目...

2020-01-02 10:05:30 703 0

提示
确定要删除当前文章?
取消 删除