前言 UE4的蓝图中有很多自带的蓝图Actions直接用就好很方便,但也需要记住,所以我把一些可能会用到的记录下来方便忘了时查找。不定时更新.
如果在UE4里,发现颜色贴图泛白,那么颜色贴图是16位数的。改成8位数就正常了(从SP、SD里导出贴图时注意设置)。 如果贴图颜色还是泛白。 4、材质属性贴图 包括Metallic(金属度)、Roughness(粗糙度)贴图 灰度贴图必须关闭GRB选项。 5、法线贴图 UE4支持Directx的法线贴图。 二、常用算法(加减乘除) 乘法节点:Multipiy M+左键(在材质蓝图面板里使用) 加法节点:Add A+左键 除法节点:Divide D+左键 减法节点:Subtract 三、UV缩放、平铺 AppendVector(追加矢量) 二、贴图效果调节(蓝图) 1、法线贴图强度调节 2、AO贴图强度调节 3、贴图亮度调节 4、去饱和度(Desaturation) 上图来自官方文档 三、各种材质制作 (2)贴花材质制作 (3)场景里添加贴花 (4)使模型不受贴花影响(不接收贴花) 四、呼吸灯制作 1、原理: 用Sine(正弦)函数节点控制自发光明暗波动。
在用UE4 开发数字孪生应用的过程中,有很多业务会涉及到actor的查找,和actor标签的使用。 比如下面的场景中,找出所有的物联网设备进行标注。 蓝图如下所示: 其中actor class 指定类,Out Actors 返回获取的actor的数组。 通过接口查找actor 通过接口查找actor的实例,蓝图如下: Interface 指定接口,Out Actors 返回获取的actor的数组。 蓝图编程添加tag 标签也可以在运行的时候动态添加。首先添加一个标签的数组(即便只有一个也需要使用数组),然后把数组添加到actors上。 本文说明actor的查找和标签的使用,属于UE4比较初级的内容,但是比较实用,相信对于初学者会有很多帮助。
一 往关卡中放置物体 二 Static Mesh 和 BSP 从今天开始我们要建立一个类似CF游戏的场景,不写一句代码,纯蓝图实现。
虚幻引擎4有一个被称为“Tick”的事件,它产生于游戏的每一帧。例如,在一个运行在每秒60帧的游戏中,“Tick”事件会在每一秒产生60次。 使用事件“Tick”,我们可以精确控制在游戏中的蓝图的运动。 为了说明使用“Tick”事件,让我们创建一个简单的例子,沿X轴移动actor。运动的速度是存储在一个称为“Speedx”浮点类型的变量。 我利用此变量的默认值是100,这是100厘米每秒的速度,因为在虚幻4引擎,一个虚幻的单位等于一厘米。 虚幻4引擎有一种行动称为Latent。潜在动作与蓝图脚本的正常流程并行运行。因此,一个潜在的行动的结论可能会发生几帧后开始。 为了说明“延迟”功能的使用,游戏运行时间,我们将用一个简单的方式创建一个脚本计算帧速率 首先,创建包含下图中的三个整数变量的新蓝图。他们在编辑器中都被标记为“可编辑”,我们可以快捷查看他们的值。
经过短暂对UE的学习,用蓝图完成了一个简单的RPG游戏Demo,接下来就对这期间的学习过程做一个复盘,一是让自己再加深一下印象,二是也给有需要的人一个参考。 打开添加角色移动的动画(stand, walk, running)保存 5.创建动画蓝图 6.打开动画蓝图,添加一个 new status machine(状态机) -> Default slot , Event Graph, 给 Speed 赋值 image 8.在将 Speed 传值给状态机 image 9.回到角色蓝图的视口,选择对应的骨骼和骨骼动画,切回场景中,我们自定义的任务就跑起来了 推荐阅读: UE4 RPG 游戏开发:简单场景创建,角色资创建,移动绑定 使用虚幻引擎自动化工具实现自动化部署 如何在 UE4 中制作一扇自动开启的大门 如何在 UE4 中用代码去控制角色移动 如何给 UE4 场景添加游戏角色 UE4:Android 平台开发实践指南
是该考虑将项目分解的时候了,这个时候会用到蓝图。 Flask 用 蓝图(blueprints) 的概念来在一个应用中或跨应用制作应用组件和支持通用的模式。 蓝图很好地简化了大型应用工作的方式,并提供给 Flask 扩展在应用上注册操作的核心方法。 一个 Blueprint 对象与 Flask 应用对象的工作方式很像,但它确实不是一个应用,而是一个描述如何构建或扩展应用的 蓝图 。 蓝图在组织flask代码时,有两种形式 功能式架构 分区式架构 功能式架构是静态资源集中化管理 分区式架构,适用于子模块有特殊需要的情况,在创建蓝图构造Blueprint对象时,可以指定static modify_password' @admin_blue.route('/') def index(): return 'admin index' /home/__init__.py,创建一个蓝图对象
Cast(_TempArryActors[i])->PrintMessage(TEXT("找到Actor&调用PringMessage函数")); } } 自定义节点传参时注意要用常量,否则蓝图中无法调用节点 (BluePrintImplementableEvent) void POIRunEvent(const TArray &POIDataOut); 通过GetAllActorClass获取实例时UE4自身 GetAllActorsOfClass 查找 /* *获取类 AActor::GetClass() 换成获取静态类 AActor::StaticClass() *GetAllActorsOfClass会爆红是UE4
正常显示中文注释; 修改方法,Vs-文件-高级保存选项-utf-8, 在VS2017中,需要自定义来显示这个选项: 1 工具→自定义; 2 点击 命令 标签; 3 在上方单选区选中 菜单栏,下拉列表选 文件; 4
初识蓝图 蓝图/Blueprint对象用起来和一个应用/Flask对象差不多,最大的区别在于一个 蓝图对象没有办法独立运行,必须将它注册到一个应用对象上才能生效 使用蓝图可以分为三个步骤 1,创建一个蓝图对象 ,通过/admin/可以访问到蓝图中定义的视图函数 运行机制 蓝图是保存了一组将来可以在应用对象上执行的操作,注册路由就是一种操作 当在应用对象上调用 route 装饰器注册路由时,这个操作将修改对象的 url_map路由表 然而,蓝图对象根本没有路由表,当我们在蓝图对象上调用route装饰器注册路由时,它只是在内部的一个延迟操作记录列表defered_functions中添加了一个项 当执行应用对象的 () 方法,这将真正的修改应用对象的路由表 蓝图的url前缀 当我们在应用对象上注册一个蓝图时,可以指定一个url_prefix关键字参数(这个参数默认是/) 在应用最终的路由表 url_map中,在蓝图上注册的路由 URL自动被加上了这个前缀,这个可以保证在多个蓝图中使用相同的URL规则而不会最终引起冲突,只要在注册蓝图时将不同的蓝图挂接到不同的自路径即可 url_for url_for('admin.index
中拖入image,高宽设置为1像素; 2.重写OnPaint函数,在函数值使用DrawLines节点画线; 3.获取image的X,Y创建2D数组传入DrawLines的Points中; UMG设置: 蓝图
那么首先需要对人员进行分层,我们将人员按照阿里技术水平首先分层,按照简单的评级标准: 初中级:对应技术等级4-5 ,初级专员、高级工程师,可以完成简单的业务需求,,在有较好较完整的项目基础上可以复制粘贴代码 4 兼容问题,需要知道产品对兼容性的要求 5 功能开发以及验收,主要是与需求对应,主要是产品验收 与测试 1 确认测试用例范围以及细节 2 测试用例的自我测试以及与测试的对照,写对应的自测报告 3 测试阶段的测试以及验收 ,可以抽样检测 4 不同测试环境以及不同功能的回归测试 5 测试的常识:测试问题分类,以及对应不同问题的处理方案,责任问题鉴定以及分工 与设计 1 确认ui效果,包括基本效果以及交互效果 2 确认需要从设计中获取的素材 3 确认需要从设计中年获取的样式代码 4 与设计统一ui标准,减少重复工作量,约定组件标准以及可复用组件 大前端团队矩阵 业务模块设计 包括分业务线的模块,以及二级业务线的关系 前端底层服务 包括公共
溯源 服务蓝图(Service Blueprint)这一名词可追溯1984年1月哈佛商业评论中G. ---- 延续 服务蓝图偏流程和系统效率的特点延续到近几年服务设计的兴起。 从这个角度来看,服务蓝图实践传统逻辑所在上下文发生巨大变化、其所鼓励的设计策略(简化、稳定化、标准化、专业化等)也发生巨大变化,我们应该重新审视服务蓝图实践本身是否符合现代服务体验设计的需要。 注意,此二点都不是完整的设计实践,而是建立上下文(Context Building)的实践,从这个意义上来说,服务蓝图,已经不是一张蓝图,帮助我们在长时间内固化服务方式和流程,而只是理解上下文、寻找设计突破口的工具 服务从标准化工业流程朝着个性化发展、客户议价能力有着巨大提升、服务地点和品牌边界日趋模糊和灵活,这些上下文使得一个固化的蓝图(Blueprint)失去曾经的意义,那么服务蓝图作为设计实践的一种,我们对它的认识也需要更新
蓝图 解决方案:Flask 给我们提供一种机制,蓝图(Blueprint)。 蓝图就是一个存储操作路由映射方法的容器,主要用来实现客户端请求和 URL 相互关联的功能。 蓝图类似 Django 中的 app,两者的功能非常相似,帮助我们实现模块化应用的功能。 在 Flask 中可以创建多个蓝图,代表不同的功能模块。 比如,上面代码中的 web 文件夹就能作为一个蓝图,另外用户相关的功能模块 user 也能创建一个相应的蓝图 蓝图应用 了解蓝图的相关功能之后,我们正式通过蓝图来解决以上问题。 view.py 中导入对应的蓝图,并将视图函数注册到蓝图中,改造完之后如下: # coding: utf-8 __author__ = 'Jerry' from flask import request 所以在 app/_ init _.py 文件中做核心对象的初始化,同时将蓝图注册到核心对象上。
line 240, in locate_app __import__(module_name) File "F:\pythonProject\flask-ex2\app.py", line 4, 4.成功启动app之后,访问index视图和admin.py中admin_home视图,如下: ? ? 那么这时候就可以使用蓝图来替换app实例了。 什么是蓝图 Blueprint? 蓝图 Blueprint:用于实现单个应用的视图、模板、静态文件的集合。 蓝图就是模块化处理的类。 蓝图的使用: 一、创建蓝图对象。 4.回到应用app.py入口文件注册应用的蓝图 from flask import Flask app = Flask(__name__) # 注册蓝图 from apps.user.views import
蓝图 解决方案:Flask 给我们提供一种机制,蓝图(Blueprint)。 蓝图就是一个存储操作路由映射方法的容器,主要用来实现客户端请求和 URL 相互关联的功能。 蓝图类似 Django 中的 app,两者的功能非常相似,帮助我们实现模块化应用的功能。 在 Flask 中可以创建多个蓝图,代表不同的功能模块。 比如,上面代码中的 web 文件夹就能作为一个蓝图,另外用户相关的功能模块 user 也能创建一个相应的蓝图 蓝图应用 了解蓝图的相关功能之后,我们正式通过蓝图来解决以上问题。 view.py 中导入对应的蓝图,并将视图函数注册到蓝图中,改造完之后如下: # coding: utf-8 __author__ = 'Jerry' from flask import request 所以在 app/_ init _.py 文件中做核心对象的初始化,同时将蓝图注册到核心对象上。
您可以将此类视为可以应用于我们尚未设计的所有布局的蓝图或秘籍-如果您愿意,可以将其作为骨架类,用作将来所有 GUI 代码的基础。 abstractmethod 我们还包括其他一些有用的模块,特别是wx Python 模块和 OpenCV(当然): import time import wx import cv2 该类被设计为从蓝图或框架派生 BaseLayout(wx.Frame): __metaclass__ = ABCMeta 稍后,当我们编写自己的自定义布局(FilterLayout)时,将使用相同的符号来指定该类基于BaseLayout蓝图 0, 1520.69/4, 0, 2764.16/4,1006.81/4, 0, 0, 1]]).reshape(3, 3) d = np.array([0.0, 0.0, 0.0, 0.0, 基本矩阵是4 x 3矩阵,它是4 x 3旋转矩阵和4 x 3平移矩阵的连接。 它通常表示为[R | t]。 您可以将其视为捕获第二张图像中相机相对于第一张图像中相机的位置和方向。
一个应用 app 可以有多个 Blueprint ,所以可以将不同功能模块的代码写到不同的蓝图中,然后将蓝图注册到 app 中。 在 views.py 中创建一个蓝图对象,并使用蓝图对象来实现相关的视图函数。 将蓝图对象注册到 Flask 主应用中 回到 Flask 主应用 app.py 中,将刚才在 views.py 中注册的蓝图对象导入,并将蓝图对象注册到主应用 app 中。 ,这说明已经访问到了蓝图中的视图函数 blue_func() 。 实现蓝图后,可以继续在此蓝图中添加同一归类的视图函数,需要其他蓝图时可以使用相同的方法继续创建蓝图,这样整个项目就实现了模块化管理。 三、蓝图的模板文件目录 蓝图的模板文件目录默认与主应用相同,也可以设置单独的模板文件目录。
蓝图与子域名 对于大项目,代码都不放在app.py里面,需要分类。 即类似javaspringboot中的分层?每个功能分为一个更小规格的层次。 url_prefix 就是 蓝图的前缀。 如果蓝图中想要渲染模板,还是会从templates中去寻找的。(静态文件也是如此,也是去static中寻找的。) 类视图 上述的过程中接触的都是函数视图,这些视图也可以基于类来实现的。
您可以将此类视为适用于我们尚未设计的所有分类器的蓝图或秘籍(我们使用第 1 章,“过滤器的乐趣”)。 为了便于访问,我们将对类标签进行硬编码以在此处使用,但是包含更多的类很简单(请注意,您必须为此下载整个数据集): classes = np.array([0, 4, 8, 12, 16, 20, 24, 如果设置了cut_roi输入参数,我们将忽略背景,并使用标注文件中指定的边界框将对象切出: if cut_roi: im = im[np.int(row[4]):np.int(row gradients block_size = (small_size[0] / 2, small_size[1] / 2) block_stride = (small_size[0] / 4, small_size[1] / 4) cell_size = block_stride num_bins = 9 hog = cv2.HOGDescriptor(small_size