乱码三千 – 分享实用IT技术

乱码三千 – 码出一个新世界


  • 首页

  • 归档

  • 搜索

UE4(虚幻引擎)之常用快捷键

发表于 2019-11-21

虚幻4中有一些按键和快捷键很常用,牢记它们并运动到实际的项目开发中,将会大大地提高你的工作效率和使得工作更简便快捷。下面将列举它们出来:

按键 动作
鼠标左键 选择actor
鼠标左键+拖动 前后移动和左右旋转摄像头
鼠标右键 选择actor并打开右键菜单
鼠标右键+拖动 旋转摄像头方向
鼠标左键+鼠标右键+拖动 摄像头上下左右移动
鼠标中键+拖动 摄像头上下左右移动
滑轮向上 摄像机向前移动
滑轮向下 摄像机向后移动
F 聚焦选中的actor
箭头方向键 摄像机前后左右移动
W 选中平移工具
E 选中旋转工具
R 选中缩放工具
W+任何鼠标按键 摄像机向前移动
S+任何鼠标按键 摄像机向后移动
A+任何鼠标按键 摄像机向左移动
D+任何鼠标按键 摄像机向右移动
E+任何鼠标按键 摄相机向上移动
Q+任何鼠标按键 摄像机向下移动
Z+任何鼠标按键 增加视野(鼠标释放后会恢复原状)
C+任何鼠标按键 缩小视野(鼠标释放后会恢复原状)
Ctrl+S 保存场景
Ctrl+N 创建新场景
Ctrl+O 打开一个已有的场景
Ctrl+Alt+S 另存为新场景
Alt+鼠标左键+拖动 复制当前选中的actor
Alt+鼠标右键+拖动 摄像机前后移动
Alt+P 进入Play预览模式
Esc 退出预览模式
F11 进入仿真模式

官方提供

Viewport

Hotkey Action
LMB Select actor under cursor, replacing selection.
Ctrl + LMB Add / Remove actor under cursor to selection.
Shift + LMB Add actor under cursor to selection.
ESC Clears selection.
TILDE Toggles command console.
Perspective
RMB + Drag Forward / Backward Rotate camera up / down.
RMB + Drag Left / Right Rotate camera left / right.
( RMB + W ) | Numpad8 | Up Move camera forward.
( RMB + S ) | Numpad2 | Down Move camera backward.
( RMB + A ) | Numpad4 | Left Move camera left.
( RMB + D ) | Numpad6 | Right Move camera right.
( RMB + E ) | Numpad9 | Page Up Move camera up.
( RMB + Q ) | Numpad7 | Page Dn Move camera down.
( RMB + C ) | Numpad3 Zoom camera in.
( RMB + Z ) | Numpad1 Zoom camera out.
LMB + Drag Forward/Backward Move camera forward /backward
LMB + Drag Left/Right Rotate camera left /right
LMB + RMB + Drag Move camera up /down
Orthographic ( Top | Front | Side )
LMB + Drag Creates selection box, selects contained actors, replacing selection.
Shift + LMB + Drag Add actors in selection box to selection.
Ctrl + Alt + Drag Remove actors in selection box from selection.
RMB + Drag Pan camera.
LMB + RMB + Drag Zoom camera in /out.
Focusing
F Focus camera on selected object or group.
Camera view
Alt + G Perspective camera.
Alt + K Side camera.
Alt + J Top camera.
Actor Manipulation
Space Toggle between ( Translate | Rotate | Scale ), see toolbar for selection.
W Selects Move tool.
E Selects Rotate tool.
R Selects Scale tool.
V Toggles vertex snapping.
LMB + Transform Axis + Drag Transforms selected actors depending on active tool.
Perspective (scale works evenly on all axes, rotate/move works as expected)
Ctrl + LMB + Drag Transform selected actor(s) along the x-axis.
Ctrl + RMB + Drag Transform selected actor(s) along the y-axis.
Ctrl + LMB + RMB + Drag Transform selected actor/s along the z-axis.
Orthographic
Ctrl + LMB + Drag Transform selected actor(s) along the view plane axis.
Ctrl + RMB + Drag Rotate selected actor(s) along the view plane axis.
Display
G Toggles Game Mode rendering.
Ctrl + R Toggles real-time playback.
F11 Toggles Fullscreen.

链接地址:https://leetnightshade.com/blog/unreal-engine-hotkeys

本帖附件

点击下载

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

告诉你为什么十六进制表示的颜色值是两位代表一种颜色

发表于 2019-11-20

学习本篇之前需要先了解《十六进制和二进制的互相转换》

前提

我们知道每个像素都是由三原色红绿蓝三种颜色组成

1
RGB //Red(红色)  Green(绿色)  Blue(蓝色)

一个像素点可以由4组8位二进制数表示(不要问为什么 重点)

1
2
3
4
5
6
7
1 1 1 1   1 1 1 1    第一组 表示红色 R

0 0 1 1 0 1 0 0 第二组 表示绿色 G

1 1 1 1 1 1 1 1 第一组 表示蓝色 B

1 1 1 1 1 1 1 1 第一组 表示表明度 A

也就是我们熟知的RGBA

结果

既然我们已经知道了二进制的颜色, 根据二进制转十六进制 利用8421法必然会将每个颜色的二进制分为两组 比如:

1
2
8 4 2 1   8 4 2 1
0 0 1 1 0 1 0 0

第一组为:2+1=3

第二组为:4

那么其对应的十六进制结果为0x34

所以RGBA每个通道需要两位十六进制进行表示

你学会了吗

本帖附件

点击下载

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

利用8421法进行十六进制与二进制的互相转换 一学就会

发表于 2019-11-20

二进制转十六进制

已知二进制值

1
110100

从右到左4位4位的进行分割(不要问为什么),位数不足的在左边添0 得到两组二进制:

1
0011 0100

然后利用8421进行对应

1
2
8 4 2 1   8 4 2 1
0 0 1 1 0 1 0 0

把0对应的值去掉 1对应的值相加得到:

第一组为:2+1=3

第二组为:4

那么其对应的十六进制结果为0x34

十六进制转二进制

同理 已知十六进制

1
0x52

第一组是5 第二组是2 对应关系为:

1
2
8 4 2 1   8 4 2 1
0 1 0 1 0 0 1 0

由于4+1=5 所以第一组4和1下面为1其余为0,同样第二组2下面值为1

最后得到二进制值为:01010010

本帖附件

点击下载

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

十进制和二进制的快速转换 一学就会

发表于 2019-11-20

十进制转二进制

首先 我们需要背诵2的2到10的幂次方,这个我相信对大家都不难,它们分别是

1
1、 2、4、8、16、32、64、128、 256、 512 、1024

这些对应的二进制分别是

1
1、10、 100 、1000 、10000 、100000、 1000000 、10000000、 100000000 、1000000000.

接下来,就是开始心算的时候,比如:

9=8+1  对应二进制 1001 

17=16+1 对应二进制  10001

 34=32+2  对应二进制    100010

  245=128+64+32+16+4+1  对应二进制 11110101

每次从高位依次往下写,比如34 从32 往下写 依次是

1
32、16 、8 、4 、2 、1

在该位数上分解的数有该数就写1,没有就写0。得到:

1
1、0、0、0、1、0 //也就是100010

二进制转十进制

同理,也是从高位开始计算,;先数二进制数比如:

     101010   6个数  就从2的(6-1)次方开始计算

          分别是32+8+2=42

找到最大位,依次往下数,该位上是1的话,就写出该数,最后相求和即可。

是不是很简单呢

本帖附件

点击下载

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

js十大邪术之一 图片隐写术

发表于 2019-11-19

1、什么是图片隐写术?

权威的wiki说法是“隐写术是一门关于信息隐藏的技巧与科学,所谓信息隐藏指的是不让除预期的接收者之外的任何人知晓信息的传递事件或者信息的内容。”,图片隐写术简而言之就是利用图片来隐藏某些数据,让人一眼看去以为是很普通很正常的图片,但其实里面隐藏着某些“机密”数据。

据传911事件里,KB份子就是通过黄色图片来传递信息而躲过了FBI的监控。还有大众点评也是通过图片隐写术来保护自身合法权益。所以图片隐写术是一个双刃剑,就看你用它做什么了。

比如下面这张图片:

看起来是一张很漂亮的风景照片,但其实它里面却藏着一张美女图(注:美女图片来源于淘宝某店),如下:

是不是很惊艳?看得你热血沸腾鼻血都往外冲呢?这就是图片隐写术的历害之处,“机密”隐藏于无形之中!

2、图片隐写术是怎么做到的?

   图片隐写有多种方式,我这里介绍的是采用图片的最低有效位(LSB)进行隐写。其原理就是图片的像素点都是由三原色(RGB)构成(如下图),由这三原色可以组成各种颜色,如CSS里的颜色定义#FFFFFF,即是三原色的16进制值写法,每个颜色各占用8bit。而LSB隐写就是修改像素中每个颜色值的最低位值,而这些修改,人眼一般是分辨不出来的,从而达到数据隐藏的目的。

  譬如我们想把’A’隐藏进来的话,如下图,就可以把A转成16进制的0x61再转成二进制的01100001,再修改为红色通道的最低位为这些二进制串。

(注:以上图片和示例来源于Wooyun)

3、Javascript实现的图片隐写术

  代码项目见GitHub: https://github.com/kingthy/imagemask

  • 在线演示 https://ipfs.io/ipfs/QmUG1TKotQYsp6bSw6pX4crFWfhJRNTnJre7buEaYYBV72
  • 使用示例
1
2
3
4
5
6
7
8
9
<script type="text/javascript" src="imagemask.js"></script>
<script type="text/javascript">
var mask = new ImageMask({
debug: false, //是否开启调试模式
charSize: 16, //字符的字节位数,默认为16,即字符最大值为0xFFFF
mixCount: 2, //隐写数据要混合到图片颜色值里的最低位数,值范围在1-5,默认为2,如果大于3,则图片会失真很严重
lengthSize: 24 //数据长度值的占用字节位数,默认为24,也即数据长度最大值为16777215
});
</script>

  

  • 隐写文本
1
2
3
4
5
6
7
8
9
10
11
//脚本里传入页面的canvas对象和要隐写的文件
var output = document.getElementById('output');
var canvas = document.getElementById('canvas');
var file = document.getElementById('file');
mask.hideFile(canvas, file.files[0], , function(result){
if(result.success){
output.src = canvas.toDataURL();
}else{
alert(result.message);
}
});

  

  • 隐写文件
1
2
3
4
5
6
7
8
9
10
11
//脚本里传入页面的canvas对象和要隐写的文件
var output = document.getElementById('output');
var canvas = document.getElementById('canvas');
var file = document.getElementById('file');
mask.hideFile(canvas, file.files[0], , function(result){
if(result.success){
output.src = canvas.toDataURL();
}else{
alert(result.message);
}
});

  

  • 读出图片里隐写的文本
1
2
var canvas = document.getElementById('canvas');
var message = mask.revealText(canvas);

  

  • 读出图片里隐写的文件
1
2
var canvas = document.getElementById('canvas');
var file = mask.revealFile(canvas); //file.name = 文件名称, file.data = 文件数据

  

4、示例图片

  • 原图
  • 隐写一章3千多字的小说内容后的图片效果

  • (隐写什么小说内容,各位有兴趣的将图片保存下来,然后在演示页面里读出来即可知道。)*

以上两张(包括上面有美女的那张)图片效果几乎是一样的,人眼是看不出来有任何变化。

5、附加说明

  1)、LSB方式的隐写图片只能存储为PNG或者BMP图片格式,并且不允许再采用有损压缩(比如JPEG),否则会丢失隐写的数据!

​ 2)、图片里可以隐写任何数据,并且可以存储的数据多少由图片的大小(长宽)来决定。也许一张图片就能存储下一部圣经的所有文字。

6、脑洞时间

  工具是有了,我们可以用来做些什么呢?发挥你的想象吧:)

​ 1)、防采集:将文本内容隐写到图片里,这样就能防直接的采集(比如小说网站、内容原创网站) ,当然了,只能防君子了。

​ 2)、版权水印:将版权水印(文字或者图片)或者其它身份识别标记(如公司里防泄密)隐写到图片里,如果对方直接盗用,则可以起到鉴别作用(如大众点评网案例)。当然了,如要防“攻击”(压缩,变形,涂改等)则需要更高深的隐写方式。有兴趣的可阅读啊里月饼事件引发的知乎讨论贴里的牛人回复。

​ 传递门:https://www.zhihu.com/question/50735753/answer/122717091

​ 3)、防监控:将文本或图片隐写到图片里,可以防机器(某墙?)监控(比如整网站都是好孩子图片或风景图,但其实都是坏孩子图片或者XX小说、XX内容)

​ 4)、文件下载: 直接将文件存于图片里,绕过文件格式限制问题。比如很多图床只能传图片,但经过隐写后就可以图片里藏任意文件了,比如大家都喜欢的种子,当然了,要求图床不会再进行图片再次压缩。

本帖附件

点击下载

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

给老司机推荐几个学习网站

发表于 2019-11-19

http://www.mayadid.com/archiver/

本帖附件

点击下载

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

老司机必备-图种快速制作神器

发表于 2019-11-19

什么是图种?

一种采用特殊方式将图片文件(如jpg格式)与压缩文件结合起来的文件。该文件一般输出为jpg图片文件,可以正常预览图片;当有人将该图片下载到本地后,可以通过修改文件的后缀,将.jpg改为.zip,并用winrar/7zip查看得到数据。由于这种方式有利于某些网友(老司机)传播种子文件,故称为图种,又叫作内涵图。

比如上面这张图片,右键保存到本地将文件后缀改成zip后打开,会有意想不到的收获

如何制作类似上面的图种呢

  • 第一种 原始方法

首先准备一张图片和一个要存放起来的压缩包,然后执行dos命令,如下

1
copy 1.jpg/b+2.zip=3.jpg

执行以上指令后会生成一个3.jpg文件,这个图片如果用图片工具打开的话跟普通图片没什么区别,可以正常查看,如果修改后缀为zip或者用压缩工具打开的话可以看到自己存在压缩包里的内容

  • 第二种 使用软件快速生成

使用方法很简单,直接提供下载地址

本帖附件

点击下载

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

如何在一台电脑上创建多个sshkey达到操控多个github账号的目的

发表于 2019-11-18

老司机一般都不只有一个github账号,多个账号同一台电脑部署代码 如果使用同一个公钥肯定是不行的,会报权限拒绝,那么如果解决这个问题呢

首先

生成一个新的sshkey

1
ssh-keygen -t rsa -C "YOUR_EMAIL@YOUREMAIL.COM" -f ~/.ssh/名字(如abc)

此时 在.ssh目录下会生成一个abc.pub和abc (.ssh目录一般位于C:\Users\windows\.ssh)

第二步 添加config配置文件

在.ssh目录下进行config文件的配置(如果没有就新建一个,不用后缀名)

以下是config文件的内容(直接拷贝的话 记得把注释去掉)

1
2
3
4
5
6
7
8
9
10
11
12
13
# 这个是原来的key
# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id-rsa

# 这个是新加的key
# github_2
Host github_1.com (此处的host名是自己取的,你也可以自己改)
HostName github.com (gitlab的话写gitlab.com?)
PreferredAuthentications publickey
IdentityFile ~/.ssh/abc (这是你的key的路径名)

第三步 将新生成的密钥添加到SSH agent中

因为系统默认只读取id_rsa,为了让SSH识别新的私钥,需将其添加到SSH agent中:

1
ssh-add ~/.ssh/abc

如果出现Could not open a connection to your authentication agent的错误,就试着用以下命令:

1
ssh-agent bash
1
ssh-add ~/.ssh/abc

第四步 在你需要连接的github的settings里配置sshkey

将新生成的公钥(.pub后缀)复制过去

第五步 修改克隆或者关联远程仓库的地址(关键)

平常咱们关联远程仓库代码是这样的

1
git remote add origin git@github.com:name/project.git

如果你想关联新github账户的仓库 需要改成

1
git remote add origin git@github_1.com:name/project.git

只要把github域名改成config中配置的就行

到此,就完事了

本帖附件

点击下载

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

打赏博主

发表于 2016-08-19

如果内容有帮助到您, 可以打赏一下哦~:moneybag:

打赏方式一

alipay

打赏方式二

wechatpay

B站入口

微信公众号二维码如下:

img

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

1…4748

乱码三千

android程序员一枚,擅长java,kotlin,python,金融投资,欢迎交流~

479 日志
139 标签
RSS
© 2024 乱码三千
本站总访问量次
由 Hexo 强力驱动
|
主题 — NexT.Muse v5.1.4
0%