很高兴见到你。你好。
すみません、美少女の体内に異世界を作りたいです【Unityシェーダー物語】
我叫美津。我通常玩游戏和看漫画。
嗯,这一次————
すみません、美少女の体内に異世界を作りたいです【Unityシェーダー物語】
哦!美少女~!
咕咕…。
すみません、美少女の体内に異世界を作りたいです【Unityシェーダー物語】

祖博!

すみません、美少女の体内に異世界を作りたいです【Unityシェーダー物語】
哦…。进入了美少女的身体(异世界)……



这就是故事。

笔记

这篇文章是“100% 可读性”是。有关详细信息,请参阅最后的“参考”。
此外,此内容已被贡献到一个完全不同的地方。这一次续订版本它已成为。即使你认为,“这篇文章在某处......”,我希望你不要说什么! (因为会泄露个人信息!)
那我们走吧!

1.有VRChat【动机】

有 VRChat。自由的。
すみません、美少女の体内に異世界を作りたいです【Unityシェーダー物語】
它是SNS之一。自由的。
尽管名称为“VR”,但不需要 VR 设备。自由的。
我会留下一篇介绍性文章作为参考,所以请阅读。
“如果我成为动漫女孩,越界相扑你可以阅读被设置的经验。
すみません、美少女の体内に異世界を作りたいです【Unityシェーダー物語】
这是主要课题。您可以在此 VRChat 中自行更改您的头像。为此,我们将使用游戏引擎“Unity”。
我也在 Unity 工作。一天…。
すみません、美少女の体内に異世界を作りたいです【Unityシェーダー物語】
水:“木呵呵……今天的美少女也很可爱。”
美津:“让我们看看!里面发生了什么!?”
谷歌谷歌…
祖博!
すみません、美少女の体内に異世界を作りたいです【Unityシェーダー物語】

?

这是一个奇怪的景象。我会解释。
在人的典型 3D 模型中,我们只看到外观。即便如此,如果你做到了里面,你将需要额外的处理。所以里面是空心的。你所能看到的只是嵌入其中的衣服和配饰。

美津「……!?……? ! ? ? …? ? ?……! ? ! ? ???! ?"

すみません、美少女の体内に異世界を作りたいです【Unityシェーダー物語】

所以我要去做。

2.这篇文章怎么看【态度】

用你的心情读它。这很困难,因为有很多新事物。
最后提供参考资料。如果您想了解更多,请参考它。
再次,完成的产品是分布的。
如果您想详细了解这段代码,我建议您阅读并与本文进行比较。

3.异世界的准备【先决条件】

・Unity [2019.4.31f1](版本是否有点最新我不介意)
・代码编辑器(Visual Studio Code 等)
・任何 3D 模型(即使是可以在 Unity 上添加的简单立方体,或免费的人 3D 模型)
・VRChat(可用于检查操作)

4.异世界的知识【理论】

HLSL 语言用于在 Unity 上绘制正面和背面。
语法类似于 C++。

(1-1) 光线追踪

这是一种描绘另一个世界的方式。它是一种通过追踪光的行为进行绘画的技术。它被称为“光线追踪”。
すみません、美少女の体内に異世界を作りたいです【Unityシェーダー物語】
(1) 计算起点到最近物体的距离。
(2) 沿射线(视线)行进(1)的距离。
(3) 计算该点到最近物体的距离。
(4) 沿射线前进 (3) 的距离。回到(3)。

所有你需要的是物体的位置关系是。这就是“距离函数”发挥作用的地方。

(1-2) 距离函数

这是一个返回到对象的最短距离的函数。即,确定对象形状的函数。这个设计非常重要。
下面是一个距离函数的例子。代表一个球体。

const float sphereSize = 1.0;	// 球の半径を1.0と定義する

float distanceFunction(float3 p){ 	//以下は距離関数
    return length(p) - sphereSize; 	//”pのベクトルの長さ - sphereSize”を返す
}

当前位置以 3D 向量 p 的形式给出。
让我们假设相机位于 (0,0,3)。即向量 p 是 (0,0,3)。它的长度为 3。如果我们在这里调用距离函数,返回值为 2。这确实是相机和球体之间的最短距离。
这就是你有一个距离函数的方式。

(2) 背面判断

这个世界有一种淘汰。这是使对象的背面透明的功能。消除不必要的处理,减少负载。
那么,当我想在背面“进行不同的处理”时该怎么办?答案很简单,使用法线。
通过添加 faces 参数,可以确定多边形的方向。
すみません、美少女の体内に異世界を作りたいです【Unityシェーダー物語】
(https://nn-hokuson.hatenablog.com/entry/2018/02/20/203511より引用)
现在您可以确定正面和背面。

(3) 朗伯反射

在 Unity 中无法看到物体,除非光线反射它们,就像月亮只有在被太阳照亮时才能看到一样。如果你用单一颜色填充它,它会看起来很平坦。因此,我们这次将使用一种称为“朗伯反射”的反射模型。
这得到了“兰伯特余弦定律”的支持。

兰伯特余弦定律

“光学中的朗伯余弦定律指出,在理想漫反射面或漫射辐射体上观察到的辐射强度或发光强度是入射光与表面法线之间的夹角 θ。它是一个表明它成正比的定律到余弦。”(引自免费百科全书“维基百科”)

这听起来很难,但很直观。重点是这个。
“从正面打光的时候,真的很亮!”.
すみません、美少女の体内に異世界を作りたいです【Unityシェーダー物語】
(https://yttm-work.jp/computer_graphics/computer_graphics_0004.htmlより引用)

5.最后【上】

于是我成功地在美少女的身体里创造了一个不同的世界。谢谢你。
すみません、美少女の体内に異世界を作りたいです【Unityシェーダー物語】
我度过了整个夏天我只是一个就为了这个。
我的酸酸甜甜的青春就这样结束了。结束了。全部。
すみません、美少女の体内に異世界を作りたいです【Unityシェーダー物語】
当我想象着屏幕另一边美丽女孩的身体时。
我一直盯着显示器,甚至没有伸手去拿它,而是抱着浅浅的睡眠。
没有什么。
如果我漫无目的地消磨时光,
全都完了。
一切,真的。
一切都结束了。
…………。
………………。
…………………………
……………………………………………………………………………………。
……………………………………………………………………………………………………。
..................................................... ..................................................... ……………………………………………………………………
..................................................... ..................................................... ………………………………………………………………………… ……………………。
..................................................... ..................................................... ………………………………………………………………………… …………………………………………………………。
すみません、美少女の体内に異世界を作りたいです【Unityシェーダー物語】
我没有遗憾。大家再见。

6.详解【参考资料】

请参阅下面的详细信息。
[Unity] [Raytracing] Unity中光线追踪介绍①显示一个球体并点亮它
它是对光线追踪的理论和实现的评论。它与实际代码一起解释。
【Unity shaders介绍】在多边形的正反面放置不同的纹理
更详细地解释4-(2)背面处理。
一本适合那些真正想用 VRChat 进行光线行进的人的书
专门从事VRChat。我有一个新发现。
・光线行进的复杂距离功能
确定形状的距离函数列表。由于它是 GLSL 语言,请相应阅读。
・ LV 的技术资料总结,直到在 Mach 学习 VRChat Shader LV5
学习着色器的链接列表,而不仅仅是光线行进。
Unity Shader 编程教科书 ShaderLab 语言解说
对基础理论有透彻的了解。这很难,但您可以看到着色器的完整视图。
实时图形数学 - 从 GLSL 开始的着色器编程(Gijutsuhyoronsha,Ryurai Hasama,2022 年)
强烈推荐。由于它是 GLSL 语言,请相应阅读。
Cyber​​Cat – 临时商店
美丽的女孩。允许在印刷和电子出版物中使用。
3D模型“桁架和楔形” - 尼龙心
美少女②。允许在印刷和电子出版物中使用。


原创声明:本文系作者授权爱码网发表,未经许可,不得转载;

原文地址:https://www.likecs.com/show-308630656.html

相关文章:

  • 2021-08-04
  • 2022-12-23
  • 2021-12-02
  • 2021-12-04
  • 2021-11-03
  • 2022-01-23
  • 2021-12-26
猜你喜欢
  • 2022-01-19
  • 2022-12-23
  • 2021-10-19
  • 2022-12-23
  • 2021-12-14
  • 2021-07-29
  • 2022-12-23
相关资源
相似解决方案