0%

大透视

K大谈大透视创作

![](/images/TouShi/KnowLedge/200222 K大答疑:大透视创作.jpg)

摄影机与角度控制

透视第一堂

角度控制和摄影机_refs

角度控制和摄影机

安全距离与取景框

K大说安全的透视距离

画方块时消失点抓多远的安全参考范围

K大说取景框

分法

三分法

![](/images/TouShi/KnowLedge/三分法 boss助教.PNG)

五分之一分段画法

七分之一分段画法

16个方块

L1知识点

1.焦点

一張作品中想表現的重點區域,我們在構圖/配色/打光所做的各種安排多是為了突顯焦點

突顯焦點的方法:①灰純對比 ②冷暖(色相)對比 ③邊緣虚實對比

​ ④明度对比 ⑤疏密對比 ⑥視覺導引

2.权利游戏(权重)

就像三國志的勢力圖,我們每下一筆色彩/光影/形狀,都會造成圖面上的勢力波動,要保持焦點擁有較好/較稀缺的資源(較顯眼)

3.固有色配色

核心思想:

高富帥主角-確認焦點處的重要地位,給予高純度/特殊色相/高明度差等等強烈對比,人物畫來說,通常是瞳孔/髮飾/首飾等等區域,高純度/冷暖明顯的這個色彩又常被說是提神色

Chapter5-SimpleShader-BaseShader

SV_POSITION SV_前缀的变量代表system value SV_POSTION一旦被作为vertex shader的输出,那么这个最终的顶点位置就被固定了(不能tensellate),直接进入光栅化处理。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Shader "Custom/Chapter5-SimpleShader" {

SubShader {
Pass{
CGPROGRAM

// 两条非常重要的编译指令
#pragma vertex vert // 顶点着色器的名字 指明那个是顶点着色器
#pragma fragment frag // 片元着色器

// 这一步是把顶点坐标从模型空间转换到裁剪空间
float4 vert(float4 v : POSITION) : SV_POSITION {//裁剪空间坐标
return mul(UNITY_MATRIX_MVP, v);//MVP 是指Model模型 View观察(摄像机) Projection投影
}

fixed4 frag() : SV_Target{
return fixed4(1.0,1.0,1.0,1.0);//白色 每个输出的顶点都会执行一次
}

ENDCG
}
}
}
  1. vert , 顶点着色器代码, 逐顶点执行, 函数的输入 v 包含了这个顶点的位置, 返回值是该顶点在模型空间中的位置, POSITION : 把模型的顶点坐标填充到输入参数中, SV_POSITION : 顶点着色器的输出是裁剪空间中的顶点坐标
  2. frag , SV_Target : 把用户的输出颜色存储到一个渲染目标中, 这里将输出到默认的帧缓存中, 片元着色器输出的颜色的每个分量范围是[0,1].

Chapter 5/Simple Shader

加入模型数据

材质的Mesh Render组件提供POSITION, TANGENT, NORMAL数据,在每帧调用Draw Call的时候, Mesh Render组件会把它负责渲染的模型数据发送给Unity Shader.

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
Shader "Unity Shaders Book/Chapter 5/Simple Shader" {
Properties {
_Color ("Color Tint", Color) = (1, 1, 1, 1)
}
SubShader {
Pass {
CGPROGRAM

#pragma vertex vert
#pragma fragment frag

uniform fixed4 _Color;

struct a2v {//Application to vertex shader 应用阶段到顶点着色器
float4 vertex : POSITION;
float3 normal : NORMAL;
float4 texcoord : TEXCOORD0;
};


struct v2f {
float4 pos : SV_POSITION;
fixed3 color : COLOR0;
};

v2f vert(a2v v) {
v2f o;
o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
o.color = v.normal * 0.5 + fixed3(0.5, 0.5, 0.5);
return o;
}

fixed4 frag(v2f i) : SV_Target {
fixed3 c = i.color;
c *= _Color.rgb;
return fixed4(c, 1.0);
}

ENDCG
}
}
}

一些编译器版本的_MSC_VER值

VC++编译器的版本号

1
2
3
4
5
6
7
8
9
10
11
MS VC++ 15.0 _MSC_VER = 1910 (Visual Studio 2017)
MS VC++ 14.0 _MSC_VER = 1900 (Visual Studio 2015)
MSVC++ 12.0 _MSC_VER == 1800 (Visual Studio 2013)
MSVC++ 11.0 _MSC_VER == 1700 (Visual Studio 2012)
MSVC++ 10.0 _MSC_VER == 1600 (Visual Studio 2010)
MSVC++ 9.0 _MSC_VER == 1500 (Visual Studio 2008)
MSVC++ 8.0 _MSC_VER == 1400 (Visual Studio 2005)
MSVC++ 7.1 _MSC_VER == 1310 (Visual Studio 2003)
MSVC++ 7.0 _MSC_VER == 1300 (VisualStudio .NET)
MSVC++ 6.0 _MSC_VER == 1200 (VisualStudio 98)
MSVC++ 5.0 _MSC_VER == 1100 (VisualStudio 97)

关于编译器版本号的查看,需要说名的是:这里的版本号并不是指在“Microsoft Visual Studio——Help——About”里的“Version”的值,这个版本号是指Visual Studio的版本号,而不是VC++编译器的版本号,VC++编译器在Visual Studio里面是指“cl.exe”程序,该程序才是编译C++代码的真正编译器,如查看“cl.exe”的版本号,以在WIndows 7查看VC 2005的“cl.exe”的版本号为例,“开始——所有程序——Microsoft Visual Studio 2005——Visual Studio Tools——Visual Studio 2005 Command Prompt”进入VC++ 2005命令行,运行“**cl /?**”,将会看到如下的信息:

1
2
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.762 for 80x86
Copyright (C) Microsoft Corporation. All rights reserved.

Microsoft Visual C++可查看全部的版本号

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
MSC    2.0   _MSC_VER == 200
MSC 3.0 _MSC_VER == 300
MSC 4.0 _MSC_VER == 400
MSC 5.0 _MSC_VER == 500
MSC 6.0 _MSC_VER == 600
MSC 7.0 _MSC_VER == 700
MSVC++ 1.0 _MSC_VER == 800
MSVC++ 2.0 _MSC_VER == 900
MSVC++ 4.0 _MSC_VER == 1000 (Developer Studio 4.0)
MSVC++ 4.2 _MSC_VER == 1020 (Developer Studio 4.2)
MSVC++ 5.0 _MSC_VER == 1100 (Visual Studio 97 version 5.0)
MSVC++ 6.0 _MSC_VER == 1200 (Visual Studio 6.0 version 6.0)
MSVC++ 7.0 _MSC_VER == 1300 (Visual Studio .NET 2002 version 7.0)
MSVC++ 7.1 _MSC_VER == 1310 (Visual Studio .NET 2003 version 7.1)
MSVC++ 8.0 _MSC_VER == 1400 (Visual Studio 2005 version 8.0)
MSVC++ 9.0 _MSC_VER == 1500 (Visual Studio 2008 version 9.0)
MSVC++ 10.0 _MSC_VER == 1600 (Visual Studio 2010 version 10.0)
MSVC++ 11.0 _MSC_VER == 1700 (Visual Studio 2012 version 11.0)
MSVC++ 12.0 _MSC_VER == 1800 (Visual Studio 2013 version 12.0)
MSVC++ 14.0 _MSC_VER == 1900 (Visual Studio 2015 version 14.0)
MSVC++ 14.1 _MSC_VER == 1910 (Visual Studio 2017 version 15.0)
MSVC++ 14.11 _MSC_VER == 1911 (Visual Studio 2017 version 15.3)
MSVC++ 14.12 _MSC_VER == 1912 (Visual Studio 2017 version 15.5)
MSVC++ 14.13 _MSC_VER == 1913 (Visual Studio 2017 version 15.6)
MSVC++ 14.14 _MSC_VER == 1914 (Visual Studio 2017 version 15.7)
MSVC++ 14.15 _MSC_VER == 1915 (Visual Studio 2017 version 15.8)
MSVC++ 14.16 _MSC_VER == 1916 (Visual Studio 2017 version 15.9)
MSVC++ 14.2 _MSC_VER == 1920 (Visual Studio 2019 Version 16.0)
MSVC++ 14.21 _MSC_VER == 1921 (Visual Studio 2019 Version 16.1)
MSVC++ 14.22 _MSC_VER == 1922 (Visual Studio 2019 Version 16.2)
MSVC++ 14.23 _MSC_VER == 1923 (Visual Studio 2019 Version 16.3)
MSVC++ 14.24 _MSC_VER == 1924 (Visual Studio 2019 Version 16.4)

由于高版本的visual studio默认不让使用scanf等函数,认为这些函数不够安全,而其相对应的代替函数为scanf_s等。如果在visual studio中使用scanf等那些visual studio认为不安全的函数,就会报错。

1
'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

以下几种方法可以解决该问题:

1.在文件开头添加 #define _CRT_SECURE_NO_WARNINGS

例如

1
2
3
4
5
6
7
8
9
10
11
12
13

#define _CRT_SECURE_NO_WARNINGS
//添加到头行,添加到stdio.h等头文件后还是会出警告的
#include <stdio.h>

int main(void)
{
char str[256] = {0};
scanf("%255s",str);
printf("Hello World!\n");
printf("%s\n",str);
return 0;
}

2.在 项目->属性->C/C++->预处理器->预处理器定义中添加_CRT_SECURE_NO_WARNINGS

image.png

image.png

1.SSH配置

Hexo博客要同时在github和coding上发布,两端同时需要提交代码,这个时候就需要电脑配置多个ssh

1
2
3
4
5
6
7
8
9
进入~/.ssh目录

ssh-keygen -t rsa -C "你的邮箱"

SSH命名为Coding 按回车

生成ssh成功,会生成coding和Coding.pub文件

同样的操作,再创建Github ssh

92SZ_NP3XFQGJG4_5BXP5MH.png

H~4FLTAPS_8_@A_2PS_WFG3.png

![2B_5Z_BO12L`YFF1_UB~__1.png](https://i.loli.net/2020/01/31/upcFLNHEPMqf75W.png)

2.添加和编辑配置文件config

在 ~/.ssh 目录下新建一个config文件

1
touch ~/.ssh/config

添加如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
# github 个人的GitHub公钥
Host Github
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/Github # 指定特定的ssh私钥文件
User git

# Coding 个人的Coding公钥
Host Coding
HostName git.coding.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/Coding # 指定特定的ssh私钥文件
User git

3.绑定github和coding的ssh

![LJV5`2OC4BO4_~_2R@LXXWO.png](https://i.loli.net/2020/01/31/PL4h13yFRjEGzAc.png)

KA__X~H9S38VCXDWZU2_G0L.png

4.ssh-add

手动开启ssh

1
eval `ssh-agent -s`

执行ssh-add

1
2
ssh-add Coding
ssh-add Github
1
'ssh-add -K 私钥' 这个命令可以永久生效.

ssh-add -l查看

1
2
3
4
$ ssh-add -l
2048 SHA256:**********************(一长串) Coding (RSA)
2048 SHA256:******************(一长串) Github (RSA)

关于windows下ssh-add失败的解决办法

打开git Bash命令行,依次执行

1
2
3
exec ssh-agent bash
eval ssh-agent -s
ssh-add "XXX\.ssh\id_rsa"

**引号中的路径就是你私钥文件的路径

5.测试

1
ssh -T git@github.com

出现

1
Hi ! You've successfully authenticated, but GitHub does not provide shell access.

成功

1
ssh -T  git@git.coding.net

出现

1
2
Coding 提示: Hello *****, You've connected to Coding.net via SSH. This is a personal key.
*****,你好,你已经通过 SSH 协议认证 Coding.net 服务,这是一个个人公钥

成功

hexo下的设置

1
2
3
4
5
6
7
# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
type: git
repo:
github: git@github.com:Molers/Molers.github.io.git,master
coding: git@git.dev.tencent.com:molers233/molers233.git,master

遗留问题

貌似每一次开启都需要ssh-add

1
ssh-add Coding Github