当前位置: 首页 > news >正文

美术如何创建 skybox 贴图资源?

文章目录

  • 目的
  • PS手绘+Panorama To Cubemap
  • PS手绘+Pano2VR
  • Skybox & Cubemap Tutorial (Maya & Photoshop)
  • Unity 中使用 ReflectionProbe 生成 Cubemap 然后再 PS 调整
  • PS直接手绘 cubemap
  • Blender 导入 Panorama,然后烘焙到 cubemap,再导入unity中使用
  • Blender cube->to sphere->再绘制模型上的纹理 (50s教程)
  • 其他的
  • References


目的

学习新的自定义天空的做法
可以再日后,自己制作,或是教会美术如何制作

这篇文章只有 美术相关的内容
程序的可以是 连连看,或是 自己撸代码实现 程序化天空盒


PS手绘+Panorama To Cubemap

参考视频:Create Custom Skybox for Unity with Photoshop - 这个是直接使用 PS 手绘 + Panorama to cubemap

PS手绘-Panorama图

方法很简单

  1. 暗灰 填充 地板
  2. 暖白 填充 顶部
  3. 使用画笔工具+SHIFT健 绘制水平面上的晚霞:橙红、橙色、蓝色,然后高斯模糊

最后生成这种的一张图:
在这里插入图片描述

Panorama To Cubemap,将刚刚PS手绘的的天空盒转为Cubemap
使用在线将全景图转为Cubemap 图
在线工具:Panorama to Cubemap
在这里插入图片描述

在这里插入图片描述


PS手绘+Pano2VR

PS手绘-Panorama图
在这里插入图片描述

Pano2VR,将Panorama图转为Cubemap

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
导入unity使用

在这里插入图片描述

顶部扭曲变形比较严重
在这里插入图片描述

调整 Invoer selecteren
在这里插入图片描述
选择 Clinder
在这里插入图片描述
调整前缀重新导出
在这里插入图片描述

可以看到顶部和底部都是用有问题的
底部的我们可以不管,只用会之前的就OK,因为几乎是纯颜色的
在这里插入图片描述

在这里插入图片描述

PS再次手绘调整顶部内容

在这里插入图片描述

调整为:
在这里插入图片描述

最终unity再次验证效果
可以看到,侧边的像素变形那边么严重了
顶部的也不会黑块了
在这里插入图片描述


Skybox & Cubemap Tutorial (Maya & Photoshop)

虽然这种方式不太高效 和 方便,当也算是其中一种制作方式

Skybox & Cubemap Tutorial (Maya & Photoshop) - 从maya如何建模cube,展开UV,如果从PS中抠图,反正各种P图,生成Cubemap,注意好每个面的UV相邻边的内容要对上,讲得非常详细

在这里插入图片描述

展开UV
在这里插入图片描述

每个UV之前的面、临边 的拓扑关系如下:
在这里插入图片描述

在这里插入图片描述

如果UV相邻关系不对,则需要调整,如下:
在这里插入图片描述

注意每个相邻便需要保留的像素为,这部分的 “倒梯形” 的像素内容
在这里插入图片描述
最后重新调整 uv 与 图像对齐
在这里插入图片描述


Unity 中使用 ReflectionProbe 生成 Cubemap 然后再 PS 调整

还有一些是在引擎中,使用烘焙工具生成 cubemap的
unity 中的话,先布置好场景,然后给需要拍摄的位置,放一个 ReflectionProbe 组件,选择 Type : Bake,然后点击 bake 即可

在这里插入图片描述

然后将 Inspector 选择 debug 模式
在这里插入图片描述

点击 Baked Texture 对应的 ReflectionProbe-0 ,让 Project 视图自动选中,对应烘焙出来的 cubemap
然后我们将这个 cubemap CTRL +D 复制一份出来,在放到我们对应的资源目录
如果需要调整的话,我们可以在PS 中自行PS,方法和之前的差不多,不过这次我们是在 cubemap 图下调整的
而不是panorama图,所以我们注意边界详解的问题
在这里插入图片描述

在PS中打开,看着个 “十字” 图不太一样
在这里插入图片描述

然后我们标记上序号
看看 unity 里面的对应的方向
在这里插入图片描述

从下图中,我们可以看出来:

  • 1是前
  • 2是后
  • 3是上(顶)
  • 4是下(底)
  • 5是相对1号的左手
  • 4是相对1号的右手
    在这里插入图片描述

在 unity 对应的 cubemap UV种类,有 竖、横 的十字,也有 竖、横 的一字,如下
参考unity 手册:Cubemaps
在这里插入图片描述

上面的方向你要看懂的话,需要想了解unity 的轴向,如下图
在这里插入图片描述

  • 右边,是x轴正方向 (左边,就是x轴负方向)
  • 上面,是y轴正方向 (下面,就是y轴负方向)
  • 前面,是z轴正方向 (后面,就是z轴负方向)

UE 应该也有类似的工具


PS直接手绘 cubemap

参考视频: How to create a hand-painted skybox for Unity using Photoshop | Mini-tutorial

和之前一样,你想要了解 unity cubemap uv 的坐标种类
在这里插入图片描述
还有 panorama 全景 uv,叫做:LatLong (Latitude-Longitude, sometimes called cylindrical) uv 布局
在这里插入图片描述

然后你可以,这上面的 uv layout 图,放到 unity 里面,看看效果
在这里插入图片描述

这里使用的是 横向 的十字 uv
在这里插入图片描述

后面就没啥可以说的了,直接绘制 cubemap 内容


Blender 导入 Panorama,然后烘焙到 cubemap,再导入unity中使用

参考视频: Creating Cubemap Skybox in Blender 2.9 for Unity - Blender 导入 Panorama,然后烘焙到 cubemap,再导入unity中使用

先 在 polyhaven/hdris 找一张 HDR 的 panorama 图

在这里插入图片描述

然后丢到 blender 里面,设置好 材质,使用上刚刚那个 panorama 贴图,然后烘焙 cubemap

如下,直接烘焙 diffuse color,margin=0px (就是不需要 uv 间隔)
在这里插入图片描述

下面是烘焙参数
在这里插入图片描述
然后将导出来的cubemap,使用PS裁剪画布顶底多余的区域
在这里插入图片描述

然后直接导入 unity 里面使用,设置好 texture 的 参数,完毕


Blender cube->to sphere->再绘制模型上的纹理 (50s教程)

参考视频: Blender Quick Tutorial - Sky Box

首先,开局一个 cube
在这里插入图片描述
将uv切开,设置为 横向 十字 uv
在这里插入图片描述
在这里插入图片描述

然后 细分一下面数
在这里插入图片描述

点两下 subedivide,细分两级即可,如下图
(按照你的需求,你可以多细分一些也是OK的)
在这里插入图片描述

然后我们使用 to sphere
在这里插入图片描述

调整到接近球体
在这里插入图片描述

然后再 flip normals 一下 (翻转法线,这样可以再 blender 里面进入这个 sphere 里面图画 cubemap 的内容)
在这里插入图片描述

将面的法线平滑一下
在这里插入图片描述

然后进入到 texture 里面图画
在这里插入图片描述

在 Texture Paint 模式里面,你可以抠图进来贴到 sphere 内壁,或是手绘 sphere 内壁的纹理就O了
在这里插入图片描述

然后将这图导入游戏引擎使用就O了
在这里插入图片描述


其他的

  • 还有一些是使用 野外实景 拍摄,使用相机 前后左右顶底 6个方向拍摄 cubemap 素材,然后回来PS合成调整的方式生成 cubemap
  • 还有另一种是直接使用 panorama 拍摄设备,拍下来就是全景
  • 还有一种使用 PS 里面的 3D/Sphere Panorama 菜单的功能 (不过现在这个功能给 adobe 从 后续新的 PS 中剥离出去了,改成独立收费的另一个软件,也是给别人吐槽疯了)
  • 还有 shader 程序化天空盒,这里不讲,感兴趣自行搜索

大家也可以自行去搜索
我上面就是搬砖,thx for you watching…


References

  • Create Custom Skybox for Unity with Photoshop - 这个是直接使用 PS 手绘 + Panorama to cubemap
  • Skybox - Photoshop to Unity 3D - PS手绘+Pano2VR
  • Creating Cubemap Skybox in Blender 2.9 for Unity - Blender 导入 Panorama,然后烘焙到 cubemap,再导入unity中使用
    • 还有另一个类似的,不过这个视频更早的: Blender Series: Create A Video Game Skybox

相关文章:

美术如何创建 skybox 贴图资源?

文章目录 目的PS手绘Panorama To CubemapPS手绘Pano2VRSkybox & Cubemap Tutorial (Maya & Photoshop)Unity 中使用 ReflectionProbe 生成 Cubemap 然后再 PS 调整PS直接手绘 cubemapBlender 导入 Panorama,然后烘焙到 cubemap,再导入unity中使用…...

【Linux 用户,用户组管理】

文章目录 什么是Linux用户和用户组用户(User)用户组(User Group) Linux用户和用户组管理命令1. 创建用户2. 删除用户3. 修改用户信息4. 创建用户组5. 将用户添加到用户组6. 用户和用户组的查询 用户和用户组管理实战 什么是Linux用…...

VS2022 C# 读取 excel 2023年

今天是2023年6月26日,我有一个excel表要读数据,然后放到winform程序来处理,网上的资料太旧,很多用不起来,试了一个可以使用,记录一下: 一、excel文件后缀需要小写。 二、用VS2022建一个winform…...

C# | Chaikin算法 —— 计算折线对应的平滑曲线坐标点

Chaikin算法——计算折线对应的平滑曲线坐标点 本文将介绍一种计算折线对应的平滑曲线坐标点的算法。该算法使用Chaikin曲线平滑处理的方法,通过控制张力因子和迭代次数来调整曲线的平滑程度和精度。通过对原始点集合进行切割和插值操作,得到平滑的曲线坐…...

day44

什么是前端 前端是所有跟用户直接打交道的都可以称之为是前端 比如:pc页面、手机页面、平板页面、汽车显示屏等等显示出来的都是前端内容 什么是后端? 就是一堆代码,用户不能够直接看到,不直接与用户打交道的都是后端 常见的后端…...

python常用操作汇总

python创建二维数组 python创建三行三列的二维数组,下面方法是错误的,因为是浅拷贝: lst1 [0] * 3 lst2 [lst1] * 3 lst2[1][1] 2 print(lst2) # [[0, 2, 0], [0, 2, 0], [0, 2, 0]]正确姿势 lst [[0 for j in range(3)] for i in ran…...

赴日IT培训 日本IT行业为啥吃香?

确实现在有许多小伙伴尝到了赴日IT的甜头,可是去日本从事IT行业真的很简单吗?为什么日本的IT行业这么缺人呢?那今天小编就跟大家聊一聊日本的IT行业。 咱们先来说说日本的IT行业为什么缺人?其实不只是IT行业,可以说日…...

2016年亚太杯APMCM数学建模大赛A题基于光学信息数据的温度及关键元素含量预测求解全过程文档及程序

2016年亚太杯APMCM数学建模大赛 A题 基于光学信息数据的温度及关键元素含量预测 原题再现 光含有能量,在一定条件下可以转化为热。燃烧是一种常见的现象,既能发光又能发热。光和热通常是同时存在的,一般来说,光强度越高&#xf…...

一文讲明:企业知识库的作用和搭建方法

在现代商务环境中,企业面临着大量的信息和知识流动。这些信息和知识散落在各个部门、团队甚至个人之间,难以进行有效的整合和利用。而企业知识库的出现解决了这一问题。它提供了一个统一的平台,将分散的信息汇聚到一个集中的数据库中&#xf…...

技术的新浪潮:从SOCKS5代理到跨界电商的未来

在当今这个日新月异的技术时代,各种创新技术如雨后春笋般涌现。从SOCKS5代理到跨界电商,再到爬虫技术、出海战略和游戏产业的飞速发展,我们正处于一个技术变革的黄金时代。 SOCKS5代理:安全的网络通道 SOCKS5代理是一种网络协议…...

Android intent的一些小使用

目录: 1. Test5.java2. activity_main5.xml3. Empty.java (这个是用来带参数打开Activity按钮用的)4. activity_empty.xml5. 总结 一些基本的问题就不进行说明了,直接上代码!!! // 最后的隐形intent和带返回值没有解决…...

Android 关闭 SELinux 释放权限限制

Android 关闭 SELinux 释放权限限制 接前一篇,后续收到客户需求想要关闭 SELinux 放开安全权限,SELinux 是 Linux 的一个安全子系统,SELinux 主要作用是最大限度地减小系统中服务进程可访问的资源,我们想要放开安全权限只需处理 …...

国际腾讯云自主拼装直播 URL教程!!!

注意事项 创建转码模板 并与播放域名进行 绑定 后,转码配置后的直播流,需将播放地址的 StreamName 拼接为 StreamName_转码模板名称,更多详情请参见 播放配置。 前提条件 已注册腾讯云账号,并开通 腾讯云直播服务。 已在 域名…...

AQS 为什么要使用双向链表?

双向链表 双向链表的特点是它有两个指针,一个指针指向前置节点,一个指针指向后继节点。所以,双向链表可以支持 常量 O(1) 时间复杂度的情况下找到前驱结点,基于这样的特点。双向链表在插入和删除操作的时候,要比单向链…...

Golang 自定义函数库(个人笔记)

1.用字符串连接切片元素(类似php implode) package mainimport ("fmt""strconv""strings" )func main() {data : []int{104, 101, 108, 108, 111}fmt.Println(IntSliceToString(data, ",")) }func IntSliceToS…...

openlayers 地图组件封装

openlayers 地图组件封装 <template><div class"mapBox"><!-- 地图 --><div ref"map" id"map" class"map"></div><!-- 点位弹窗 --><div id"popup" class"ol-popup">…...

【算法设计与分析】—— 分治算法

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…...

Unable to find GatewayFilterFactory with name TokenRelay

目录 问题分析解决方案参考文档开源项目微服务商城项目前后端分离项目 问题分析 Spring Cloud Gateway 网关作为代理资源服务器&#xff0c;需要将 JWT 传递给下游资源服务器&#xff0c;下面是网关的配置 spring:cloud:gateway:discovery:locator:enabled: true # 启用服务发…...

竞赛 深度学习大数据物流平台 python

文章目录 0 前言1 课题背景2 物流大数据平台的架构与设计3 智能车货匹配推荐算法的实现**1\. 问题陈述****2\. 算法模型**3\. 模型构建总览 **4 司机标签体系的搭建及算法****1\. 冷启动**2\. LSTM多标签模型算法 5 货运价格预测6 总结7 部分核心代码8 最后 0 前言 &#x1f5…...

git基础及原理相关解析

git入门 结构基本操作help提交分支git merge和git rebase对比 拉取 git文档 结构 工作区&#xff1a;电脑目录中能看到的文件暂存区&#xff1a;使用git add *操作提交文件的位置&#xff0c;一般位于.git\index&#xff0c;这个文件里面存储了当前位于暂存区的所有文件的校验…...

【Python机器学习】零基础掌握isotonic_regression等渗回归

遇到了数据不一致的困扰吗? 在市场分析、医疗研究或者其他数据密集型领域,经常会遇到一个问题:如何从一组不完全一致或者有噪音的数据中提取出有用的信息?例如,假设一家餐厅想要根据顾客的评分和消费金额来调整菜单。 顾客评分消费金额(元)顾客年龄访问次数4.21002533.…...

支持宏的文本编辑器提高生产力

场景 我们知道很多文本/代码编辑器支持宏的录制、重放、保存&#xff0c;甚至可以与快捷键命令结合的功能&#xff0c;快速实现重放宏的操作。 如果您的编辑器支持宏这项功能&#xff0c;请多使用 &#x1f603; 宏化自动步骤相当于对编辑器的自动化编程&#xff0c;宏录制可…...

JS中面向对象的程序设计

面向对象&#xff08;Object-Oriented&#xff0c;OO&#xff09;的语言有一个标志&#xff0c;那就是它们都有类的概念&#xff0c;而通过类可以创建任意多个具有相同属性和方法的对象。但在ECMAScript 中没有类的概念&#xff0c;因此它的对象也与基于类的语言中的对象有所不…...

云耀服务器L实例搭配负载均衡部署Linux 可视化宝塔面板

云耀服务器L实例搭配负载均衡部署Linux 可视化宝塔面板 1. 华为云云耀服务器L实例介绍 华为云云耀服务器L实例是一种高性能、高可靠性的云服务器实例&#xff0c;适用于大规模企业级应用、大数据分析等场景。它基于华为最新一代的硬件虚拟化技术&#xff0c;提供了更高的计算…...

mac pycharm配置autopep8

mac终端安装autopep8 pip install autopep8pycharm配置autopep8 在Pycharm中点击 File–Settings—Tools–External Tools, 点击图中绿色加号图标添加扩展工具&#xff0c;填写相关参数配置。 Name&#xff1a;Autopep8&#xff08;可以随便取&#xff09; Tools setting&…...

Vue $nextTick

我们用一个例子来说明$nextTick的作用&#xff1a; 我们用一个变量showIpt来控制input框的显示和隐藏&#xff0c;默认是隐藏。 我们点击一个按钮后显示这个输入框的同时&#xff0c;input还要自动获取焦点。 但是我们点击按钮过后并没有生效。 为什么&#xff1f;this.show…...

linux配置dns

服务器有网&#xff0c;ping IP 地址可以ping的通&#xff0c;但是ping网站域名ping不通&#xff0c;需要配置dns 使用公共dns服务器 1、设置dns服务器地址 vi /etc/resolv.conf 将谷歌的dns服务器地址添加到dns解析配置中 nameserver 8.8.8.8 nameserver 8.8.4.4 保存后&…...

12 原子性|可见性|有序性|JMM内存模型

1 并发三大特性 1.1 原子性 一个或多个操作&#xff0c;要么全部执行&#xff0c;要么全部不执行。Java中&#xff0c;对基本数据类型的变量的读取和赋值操作是原子性操作&#xff0c;但不采取任何原子性保障措施的自增操作不是原子性的&#xff0c;如&#xff1a;i public c…...

pytorch代码复现1(基础知识)

创建矩阵 全零矩阵 In [4]: import torch torch.__version__ xtorch.empty(5,3) xOut[4]: tensor([[0.0000e00, 0.0000e00, 4.6430e-23],[1.4013e-45, 1.2612e-44, 0.0000e00],[3.5733e-43, 0.0000e00, 0.0000e00],[0.0000e00, 0.0000e00, 0.0000e00],[0.0000e00, 0.0000e00, 0…...

PostGreSQL模式schema

问题引入 之前在做数据库设计时&#xff0c;经常会忽略schema模式&#xff0c;直接在数据库下的public模式下建立各类数据表。如果数据表命名不够规范&#xff0c;后期寻找某张表时就会比较麻烦。通过 所幸&#xff0c;PostgreSQL 的模式schema管理&#xff0c;可以对这个问题…...