- 博客(91)
- 收藏
- 关注
原创 原码、反码与补码以及数据在内存中的编码
1、原码、反码与补码原码:最高位为符号位,8位数表示的数据最大指为127=0b0111 1111,最小值为-127=0b1111 1111,数值范围-127~127,能表示255个数字,其中10000000和00000000都表示0。反码:正数的反码是原码,负数的反码是原码除符号位外各位取反,8位数表示的数据最大值127=0b01111111,最小值为-127=0b10000000,数值范围-...
2020-03-12 23:46:20
3822
原创 UE4如何将UMG逻辑代码在C++中实现
UE4游戏中的界面一般用UMG来编辑,逻辑使用蓝图代码,但如果逻辑复杂,使用蓝图实现就会比较乱,也不好维护,所以在C++工程中我们通常可以将大部分代码在C++中实现,只留出几个供蓝图调用的接口。如果不想写蓝图代码,而是完全在C++中实现,通过下面的方法是可以实现的,这样界面与逻辑就分离了,便于后期维护和修改。1、首先创建一个继承自UUserWidget的C++类UCLASS(...
2020-03-10 15:06:05
2662
2
原创 UE4学习笔记:我的材质集合(2)
1、关闭深度测试关闭深度测试的材质无论前面是否有遮挡物都会显示,如下面的一个纯红色材质勾选材质属性Translucency栏下的Disable Depth Test这种材质可以用于坐标轴,如下图所示的坐标轴使用的这种材质,虽然在地板下面也能看到2、后期处理材质一般用于后期处理体积,影响场景(后期处理体积内)最终整体渲染效果,更多关于后期处理材质内容参考:http...
2020-01-19 11:23:24
2965
原创 UE4打包运行后出现Could not find SuperStruct XXXX错误的解决办法
先看下报错的现象,新建工程MyProject,然后在Plugins窗口点击NewPlugin新建一个Blank插件MyPlugin 在MyPlugin插件中创建一个AActor类AMyActor,然后在编辑器中新建基于AMyActor的蓝图类BP_MyActor,将BP_MyActor拖入关卡,打包后运行会出现下列错误弹窗 按错误所说的意思应该时插件没有打...
2020-01-10 15:25:44
3026
原创 OpenCV实现简单的套索工具
Photoshop中的套索工具通过鼠标多次点击可以选中一个任意多边形的区域,然后单独对这块区域进行编辑,下面就使用OpenCV实现一个简单的功能,模拟Photoshop中的套索工具。 这里的套索工具通过鼠标左键在图片上多次点击创建任意多个点,右键点击后将这些点连成封闭的多边形,形成一块待编辑的区域,键盘方向键控制该区域的移动,从而将该区域内的图像复制到原图像的其他地方。...
2020-01-08 16:30:59
1445
原创 在UE4中实现撤销(Undo)和重做(Redo)功能
一般编辑功能都有撤销和重做,如下图是VS的编辑菜单下的撤销/重做功能,UE4编辑器的Edit菜单下也有Undo和Redo功能 如果要在游戏中实现撤销/重做就要自己写代码实现了,比如撤销/重做Actor的移动或隐藏,下面来实现这样一个简化版的功能。 每种需要撤销和重做的功能类型都使用一个类来保存所有需要的信息,如物体的位置移动需要保存Actor的指针、...
2020-01-04 15:08:57
7949
原创 3dmax使用MAXScript调整对象的轴位置
在3DMAX中可以通过层次(Hierarchy)面板调整轴的位置,也就是对象的局部坐标系原点,如下图所示 但是当物体很多而且移动的位置又是物体的顶部底部等位置时,使用Maxscript脚本来修改就方便很多。例如将轴对齐到物体的中心,可以使用下列的脚本实现for obj in selection do( obj.pivot=obj.center)...
2019-12-18 20:49:57
3963
3
原创 UE4学习笔记:如何在场景中播放视频
UE4的媒体框架(https://docs.unrealengine.com/en-US/Engine/MediaFramework/index.html)可用于播放本地视频、视频流以及图片序列。可以利用这些功能实现在场景中播放视频,例如在场景中有一个电视机模型,可以通过按键交互控制电视画面的播放、暂停以及关闭。 以播放单个视频为例,需要的资源有: 1、视频...
2019-12-09 13:59:35
4306
原创 UE4中的简单碰撞与复杂碰撞
物体碰撞形状分为简单碰撞和复杂碰撞,简单碰撞的形状比较简单,方便计算,可以由用户自己添加和编辑,复杂碰撞紧贴物体表面,形状精确但是计算量大。 将引擎下的球体模型复制到工程的Content目录下,双击在模型编辑器中观察简单碰撞(不太明显)和复杂碰撞,使用工具栏Collision下拉菜单切换碰撞的显示与隐藏,如下图所示 为了在碰撞检测测试中更明显看到简单碰...
2019-12-04 10:43:00
14001
3
原创 Threejs中Geometry的用法示例
Geometry是其他很多XXXGeometry(如BoxGeometry、SphereGeometry)的基类,与之相对应的还有BufferGeometry,BufferGeometry是其他带BufferGeomerty的基类, BufferGeomerty效率比Geometry高,但是Geometry使用相对简单点,本文就说下Geometry的基本用法。 Geo...
2019-11-30 22:25:15
11193
原创 Threejs使用自定义shader
Threejs中的ShaderMaterial可以使用自定义的shader,参数vertexShader和fragmentShader分别对应顶点着色器和片段着色器的内容(由GLSL写成)。顶点着色器和片段着色器的内容可以分别放到一个<script>标签内<script id="vs" type="x-shader/x-vertex">varying vec4 ...
2019-11-24 22:25:18
6158
原创 python在本地目录下创建简单HTTP服务器
在当前目录下运行python -m http.server就可以搭建一个简单的服务器,下面命令在D:/servertest目录下搭建了一个本地服务器,默认端口号是8000也可以在该目录下创建一个bat文件,内容为python -m http.server,双击运行即可,按CTRL+C关闭服务器浏览器输入地址http://localhost:8000/,可以查看该目录下index.html文件(...
2019-11-18 21:47:56
1432
原创 UE4在C++中调用蓝图类中的函数
在Content下新建一个蓝图类BP_CallTest,并添加一个函数TestCppCall该函数名TestCppCall包含在UClass类成员变量FuncMap中,通过FindFunctionByName获取,返回类型为UFunction*,然后通过Actor实例调用ProcessEvent函数FSoftClassPath softClassPath(TEXT("/Game/BP...
2019-11-17 14:24:18
4109
原创 UE4在C++中加载Content目录下的资源文件
UE4中Content的资源都是继承于UObject类,可以使用LoadObject加载资源UObject* object = LoadObject<UObject>(nullptr,path);例如加载StarterContent/Props中的模型资源SM_Chair可以这样写UStaticMesh* mesh = LoadObject<UStaticMesh...
2019-11-16 23:37:04
6180
2
原创 UE4绘制自定义模型
UE4中的UProceduralMeshComponent组件可以用于绘制自定义形状的模型,该组件位于ProceduralMeshComponent插件中,如果要引用该插件中的功能就要在XXXX.build.cs文件中加入对ProceduralMeshComponent模块的引用,如下所示PublicDependencyModuleNames.AddRange(new strin...
2019-11-12 21:58:10
8776
7
原创 Unity在脚本中修改材质参数
通过再脚本中修改材质参数,可以实现游戏中动态更新材质表现(如修改颜色),下面是一个在每一帧随机更改材质颜色的简单实例。1、创建一个Standard Surface Shader,命名为TestShader,文本编辑器打开将内容换成下列代码Shader "Custom/TestShader"{ Properties { _Color ("Color", ...
2019-11-09 22:06:33
4967
原创 Windows环境下编译Airsim
AirSim是微软基于UE4(后来也添加了Unity工程)开发的一款开源模拟器,可以模拟无人机、无人车。源码地址:https://github.com/Microsoft/AirSim下面简单说下编译过程(假设已经安装了VS、UE4等环境),编译该项目分为两部分,第一部分是编译依赖库工程,第二部分是编译UE4工程,这里主要介绍依赖库工程的编译。下载源码解压后可以看到AirSim目录下...
2019-11-05 22:52:46
1452
原创 unity实现HTTP请求
unity中UnityWebRequest和WWW都可以实现HTTP请求,下面举例说明两种方法分别实现Get和Post请求1、UnityWebRequest实现HTTP请求Get请求IEnumerator GetRequest(string url){ using (UnityWebRequest webRequest = UnityWebRequest.Get(url))...
2019-10-26 11:14:02
13361
1
原创 unity使用GUI实现基本控件
新建C#脚本文件GUITest.cs,写入如下代码using System.Collections;using System.Collections.Generic;using UnityEngine;public class GUITest : MonoBehaviour{ public Texture buttonTexture; public Texture...
2019-10-24 14:26:58
1343
原创 Python读取和保存GIF图片
PIL(Python Imaging Library)是Python中一个强大的图像处理库,但只支持到Python2.7Pillow是PIL的一个分支,本文使用Pillow读取和保存gif图片,如果还没安装,可使用下面的命令安装pip install Pillow1、读取gif图片# -*- coding: utf-8 -*-from PIL import Imagefro...
2019-10-13 14:31:47
13200
3
原创 UE4在VR模式下使用3D控件
UE4中UWidgetComponent可以将UMG转为3D界面放到场景中,操作与2D界面操作一样,但是在VR模式下通过手柄操作不能像鼠标一样点击,这时就要用到UWidgetInteractionComponent与3D界面交互。1、新建一个UMG,命名为Widget3D,拖入一个Button和Image控件,如图2、添加蓝图代码,在按钮的点击事件中切换Image的背景色3、新...
2019-09-27 22:35:04
7440
7
原创 Opencv基本操作
使用opencv前先要配置头文件目录和库文件目录,以4.1.0版本为例头文件包含目录:工程右键=>属性=>配置属性=>VC++目录=>包含目录 "opencv\build\include"库文件包含目录:复制到工程目录或者在工程右键=>属性=>配置属性=>VC++目录=>库目录 "opencv\build\x64\vc15\lib"库文件可通...
2019-09-25 22:35:16
399
转载 GitHub开源的10个超棒后台管理面板
目录1、AdminLTE2、vue-Element-Admin3、tabler4、Gentelella5、ng2-admin6、ant-design-pro7、blur-admin8、iview-admin9、material-dashboard10、layui项目开发中后台管理平台必不...
2019-09-25 10:32:05
2554
原创 OpenCV实现简单的录屏功能
OpenCV中VideoCapture和VideoWriter用于读写视频文件,这里的录屏功能用到VideoWriter,用于将捕获的屏幕的每一帧数据保存到视频文件。VideoWriter写视频文件的步骤bool open(const String& filename, int fourcc, double fps,Size frameSize, bool isColor = tru...
2019-09-21 21:09:26
7248
1
原创 windows批量重命名文件
新建一个bat文件,添加如下代码后双击运行,就可以将images目录下的png文件按序号重命名::关闭命令回显@echo off::启用延迟环境变量扩展setlocal EnableDelayedExpansion::序号初始值为0set /a n=0::查找images目录下所有的png文件for /f %%i in ('dir /b .\images\*.png') do ...
2019-09-20 17:13:43
431
转载 linux C/C++服务器后台开发面试题总结
一、编程语言1.根据熟悉的语言,谈谈两种语言的区别?主要浅谈下C/C++和PHP语言的区别:1)PHP弱类型语言,一种脚本语言,对数据的类型不要求过多,较多的应用于Web应用开发,现在好多互联网开发公司的主流web后台开发语言,主要框架为mvc模型,如smarty,yaf,升级的PHP7速度较快,对服务器的压力要小很多,在新浪微博已经有应用,对比很明显。2)C/C++开发语言,C...
2019-09-18 15:36:07
658
原创 如何在桌面截取gif动态图
1、LICEcapLICEcap是一个免费开源的桌面gif图片截取工具,使用很简单,官网:https://www.cockos.com/licecap/,下载安装后打开,效果如下这个窗口中间部分是透明的,可以在窗口中操作下层窗口,这块透明的部分也是最终gif图像显示的部分,这里的下层窗口是网页。左下角用于设置帧率和图片尺寸,右下角Record和Stop用于开始和结束录制,点击Recor...
2019-09-17 23:05:08
5758
转载 零基础成为黑客
笔者刚乱入了CTF,算是入门了,此处分享一下入门经验一个漏洞练习平台: https://github.com/gh0stkey/...
2019-09-16 17:02:47
799
原创 Windows编程:在程序中打开文件和文件夹
ShellExecute函数用于执行shell命令,可用于打开文件夹或文件,ShellExecute函数的多字节版本ShellExecuteA(宽字符版本为ShellExecuteW)原型如下HINSTANCE ShellExecuteA(HWND hwnd,LPCSTR lpOperation,LPCSTR lpFile,LPCSTR lpParameters,LPCSTR lpDirec...
2019-09-14 21:17:02
1834
1
原创 C语言文件操作
1、打开文件FILE* fopen(char const* _FileName,char const* _Mode);@_FileName文件名@_Mode有单个或多个字符组成的字符串(读写权限+读写类型和/或'+')读写权限:r(read),w(write),a(append)读写类型:t(text),b(binary)可读可写:+r和r+文件必须存在,w和w+会替换原有文件...
2019-09-11 22:14:45
195
原创 UE4之替换多维子材质
多维子材质是指一个模型的不同部分分别用了不同的材质,在UE4中打开模型编辑器界面,就能看到模型的材质组成,如下图,在LOD0的Sections栏看到该模型(StarterContent中的SM_Door)由两个材质部分组成。MaterialSlot表示该部分使用的某个材质槽的材质,材质槽可以由我们自己编辑,如下图,在默认材质槽后面又新建了一个材质槽,并命名为MySlot,只要将上面的Mat...
2019-09-09 22:22:33
5213
1
原创 Python实现TCP通信
使用socket实现tcp通信,需导入socket模块1、服务端主要步骤:(1)创建socket:socket.socket(family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None)family:AF_INET , AF_INET6, AF_UNIX, AF_CAN, AF_PACKET, AF_RDStype:SOCK_...
2019-09-06 22:13:39
28526
3
转载 经典C++笔试题目100例,接近实际,值得一看!
第一部分:C++与C语言的差异(1-18)1、C 和 C++ 中 struct 有什么区别? Protection行为 能否定义函数 C 无 否,但可以有函数指针 C++ 有 可以,默认是public 2、C++中的 s...
2019-09-05 16:27:31
9034
转载 《Python 100例》练习
搜语法的时候无意间在这里发现了个python100题。本着复习python的想法做了一下,过程中发现有些题不像是python的,网上一搜才知道这东西原名叫做《C语言程序设计100个经典例子》,果然好坑。挑能做的做了一遍,有的需要思考一下;而有的题对于python而言,实现起来实在太简单了。-------...
2019-09-05 09:46:00
831
原创 UE4学习笔记:关卡流(LevelStream)
通过关卡流可以在需要的时候动态加载关卡,不需要的时候卸载,降低内存使用率,构建大型场景。通过简单的示例了解关卡流的用法。1、新建一个两个关卡,在关卡里分别放一个"Level1"和"Level2"的文本,保存文件名为StreamLevel1和StreamLevel22、新建一个空关卡,并打开Levels窗口3、在Levels界面,将StreamLevel1和StreamLevel...
2019-09-04 21:12:15
15838
2
原创 Threejs实现全景图功能
可以利用Threejs中的立方体或者球体实现全景图功能,把立方体或球体当成天空盒子,将无缝衔接的图片贴上,看起来就像在一个场景中,相机一般放置在中央,只要离边缘足够远就看不出是立方体或球体,但如果超出边界就能看到他们。Threejs也有官方的全景图实例:https://threejs.org/examples/?q=pano#webgl_panorama_cubehttps://three...
2019-09-02 21:28:12
17019
8
原创 git push命令出现HttpRequestException encountered的解决办法
调用git push命令上传代码时可能会出现提示"Fatal: HttpRequestException encountered.",然后要手动输入用户名和密码,如图网上找了下解决办法,只要到https://github.com/microsoft/Git-Credential-Manager-for-Windows下载Git-Credential-Manager-for-Windows,...
2019-08-30 15:33:51
2556
原创 初次编译cximage遇到的一些错误
在网上下载了cximage的7.02版本,用VS2017打开,遇到一些编译错误,把解决过程记录下来。1、我打开的是CxImageFull_vc10.sln文件,编译CxImageFull_vc10.sln需要MFC开发环境(Console和Console_vc10可以不需要),打开会提示升级工具集,点击确定。2、打开工程默认都是Win32 Debug配置,就说下Win32 Debug版...
2019-08-28 21:23:09
2494
2
原创 UE4学习笔记:行为树(BehaviorTree)实例
下面用行为树创建一个简单的AI角色,没有玩家靠近时随机巡逻,当有玩家角色靠近时跑到玩家附近,模拟游戏中怪物攻击玩家的行为(没有实际的攻击动作),是官方示例的简化版,官方完整实例参考:https://docs.unrealengine.com/zh-CN/Engine/ArtificialIntelligence/BehaviorTrees/BehaviorTreeQuickStart/i...
2019-08-26 22:16:41
7066
1
原创 计算机图形学:直线的光栅化模拟
屏幕是有若干像素点组成的,任何图形画到屏幕上都要先转为像素点,也就是光栅化,下面模拟直线的光栅化。像素的最小单位为1,且为整数,所以在直线上只能取在X轴或Y轴上步进为1的最接近的整数点,至于是X轴还是Y轴取决于跨度大的轴,假设直线起点为(x1,y1),终点为(x2,y2),如果|x2-x1|>=|y2-y1|,即斜率位于-1和1之间,则X轴每次步进一个像素,否则Y轴。 ...
2019-08-24 15:57:25
1524
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人