记忆中的像素块褪色了吗?用开源的体素编辑器重新做个 3D 的吧!
本文适合对图形表现有兴趣的美术或者开发人员
本文作者:HelloGitHub-Joey
早期的的显示设备像素颗粒较大,使得显示内容的颗粒感严重,像是由一堆方块组成的。比较好的例子就是 GBA 上的游戏,相信这也是很多朋友宝贵的童年回忆。这种艺术风格一直延续到现在,虽然显示设备的分辨率已经足以显示非常细腻的画面,但还是有不少人偏爱像素风格的游戏与艺术画。
像素(Pixel)的概念对应到 3D 空间中就是体素(Voxel),使用离散的基本单位来表示 3D 空间中的物体,最直白的理解就是一个个小方块,“我的世界”就是一款非常著名的体素游戏。
这里是 HelloGitHub 推出的《讲解开源项目》系列,今天要介绍的体素编辑器 Goxel 就是一款用来创作 3D 体素艺术作品的编辑器。有了它人人都可以尝试自己制作出 3D 像素作品,回味童年的味道。
一、快速开始
Goxel 是一款开源的体素编辑器,提供跨平台支持包括 iOS、Android 与在线网页版。软件内部使用稀疏矩阵存储数据,使得其可以支持非常大规模的场景编辑。完成编辑后,软件支持导出包括 glTF2.0、obj 在内的多种 3D 格式文件,这些格式可在其他软件或者游戏中使用。
1.1 下载安装
项目的官网的下载页中提供了桌面平台和移动平台的下载连接。移动平台是直接到对应商店的链接,iOS 设备可以直接在 App Store 中下载。
在线网页版在首页上方 Web Version,在浏览器内即可体验。
1.2 编译安装
此部分内容针对希望进行编译安装或者在 Linux 系统上使用的朋友,如果其他平台上希望简单体验软件可以直接下载二进制文件使用。
首先需要安装所需的依赖库,可直接使用对应的包管理软件安装。所需的依赖如下(不同系统下软件包名字可能稍有区别):
- scons
- pkg-config
- libglfw3-dev
- libgtk-3-dev
安装完所需依赖后,首先 clone 项目:
git clone https://github.com/guillaumechereau/goxel.git
完成 clone 后进入项目根目录并输入:
make release
即可完成编译。完成后会在根目录生成 goxel 可执行文件,输入:
./goxel
即可使用。
我在测试时发现 Linux 平台上存在严重 bug 会导致无法绘制方块或者无法使用 UI,建议使用 Mac 进行尝试。
二、界面介绍
类似传统的编辑器软件,界面中间区域是进行体素绘制的部分,点击鼠标左键并拖动进行笔刷操作。
2.1 工具栏按钮介绍
工具栏按钮使用红框划出,分为两类:撤销重做与笔刷控制。
撤销重做部分(左边三个按钮)包含了:撤销、重做、清空当前层 三个功能按钮,提供笔刷历史控制,可以以单次左键按下滑动操作为单位的撤销与重做。第三个按钮提供了清空当前图层所有体素的功能。
笔刷控制部分包含右边四个按钮,其中前三个按钮为笔刷模式按钮,第四个按钮用来控制笔刷作用的体素颜色。笔刷模式包括:
- 增加体素模式,鼠标拖动添加当前设定颜色的体素
- 删减体素模式,鼠标拖动删减轨迹上的体素
- 修改颜色模式,鼠标拖动将轨迹上体素的颜色修改为当前设定颜色
2.2 左边栏按钮简介
根据图中标识的序号对各个按钮进行功能简介:
- 工具栏分页,点击后会弹出具体的工具列表,包括笔刷,平面蒙板,模糊选择,颜色拾取,程序化生成等工具
- 色板分页,点击后会弹出常用的预设颜色列表
- 图层管理页,非常类似 Photoshop 中的图层概念,可以在各个图层中单独绘制体素,该分页提供了图层的增删显示控制
- 显示控制,点击后会弹出全局显示控制的选项,此部分仅控制画面显示效果,对编辑不影响
- 材质控制,点击后会弹出全局体素的材质控制选项,包含简单的粗糙度,金属度等属性控制
- 灯光控制,点击后会弹出整体环境灯光的控制选项
- 相机控制,点击后会弹出相机控制的分页,在此分页可以增减相机,并在多个机位间切换。另外也可控制相机的位置朝向,并提供了若干正视视角的预设摄像机角度
- 画幅控制,此部分提供了整体 3D 空间的相对位置与大小控制项
- 渲染,点击此按钮后会开始离线渲染过程,将当前相机视角下的画面使用离线渲染算法渲染出来,具体的效果与上面灯光材质分页中的设置相关联,完成渲染后可保存图片
- 导出分页,此分页中提供了将当前编辑结果导出成其他 3D 格式文件的选项
三、使用建议
我测试了 Linux、Mac、iOS 以及 Web 这四个平台,各平台情况总结如下:
- Linux 平台需要编译安装,编译过程很顺利,但存在严重界面 bug,导致无法使用,不建议
- Mac 平台上使用触摸板手势支持不太完整,若使用鼠标的话体验较为良好
- iOS 平台上个人认为是使用体验最好的,手势支持完整,所见即所得,官网上的宣传视频即是使用 iPad Pro演示
- Web 的菜单栏按钮无法使用,但导出功能可以使用左边栏中按钮完成,不影响使用,是最方便的体验方式
四、作品展示
以下图片来自官网Gallery页
五、最后
曾在各种视频内容中看到过作者在 MC 中创造各种美丽的景观,实现各种有趣的想法,现在使用这款编辑器亦可做到相同的事情,加上编辑器内提供的各种操作工具,能够使创作者们更加方便快捷地去绘制添加体素,更加自由且快速地实现自己的想法。软件支持的导出格式亦可将作品转移到其他 3D 软件中进行进一步加工制作,成为一个完整的 voxel art 作品。
此外,作为一个开源项目,如果如果在使用过程中发现一些可以改进的点且有开发能力的话,也可尝试与项目维护人员沟通交流,确定开发计划并回馈社区,帮助软件改善的同时亦能对自己的简历增加一个亮眼的经历。
记忆中的像素块褪色了吗?用开源的体素编辑器重新做个 3D 的吧!的更多相关文章
- 在HTML中如何把块的边框做成圆角
adius,就是半径的意思.用这个属性可以很容易做出圆角效果,当然,也可以做出圆形效果.原理很简单,“正方形的内切圆的半径等于正方形边长的一半”.下面就做一个红色的圆. 工具/原料 Adobe Dre ...
- java中静态代码块,构造代码块,以及构造方法的执行顺序
写了许久的代码,却把一些基础的东西都给忘了,今天无聊就顺手写了个,然后测试下,发现跟我记忆中的竟然有些出入,作为一个两年的开发,我感觉自己很失败啊. 父类pojo: public class Pojo ...
- java 子类、父类中静态代码块、字段,非静态代码块、字段以及构造函数的初始化顺序和次数
一个类中的数据初始化顺序是面试官非常喜欢出的面试题之一,本文用一个实例来介绍java中子类.父类中静态代码块.字段,非静态代码块.字段以及构造函数的执行顺序和次数. 一.包结构
- Service 中添加同步块防止并发 重复
Service 中添加同步块防止并发 重复. synchronized(this){}
- ORA-00379 缓冲池 DEFAULT 中无法提供 32K 块大小的空闲缓冲区
(一)问题 今天在使用Pl/sql developer查看表空间大小的时候,报错误:ORA-00379 缓冲池 DEFAULT 中无法提供 32K 块大小的空闲缓冲区,具体如下图: SQL> s ...
- 删除外部dwg中指定的块定义
本例实现删除外部图纸中指定的块定义,在外部图纸当前模型空间中是没有该块定义的块参照存在. 代码如下: void CBlockUtil::DeleteBlockDefFormOtherDwg(const ...
- 【Java基础】2、Java中普通代码块,构造代码块,静态代码块区别及代码示例
Java中普通代码块,构造代码块,静态代码块区别及代码示例.Java中普通代码块,构造代码块,静态代码块区别及代码示例 执行顺序:静态代码块>静态方法(main方法)>构造代码块>构 ...
- javascript中不存在块级作用域,所以要小心使用在块级作用域中的函数声明所带来的作用域混乱.
在javascript中函数的作用域是一个非常重要的概念. javascript中是没有块级作用域,但是有函数作用域的概念. 我们在开发的过程中,经常会遇到这样的问题, 某个函数我暂时不需要,不想声明 ...
- OpenGL中的像素包装理解
OpenGL中的像素包装理解 像素包装 位图和像素图很少会被紧密包装到内存中.在许多硬件平台上,考虑到性能的原因位图和像素图的每一行的数据会从特殊的字节对齐地址开始.绝大多数编译 器会自动把变量和缓冲 ...
随机推荐
- 二、JMeter的图形界面认识
JMeter的图形界面认识 JMeter是一个工具,应该去认识它,熟悉它,现在的能力还没达到去优化.改造它能力,所以先花时间熟悉它. JMeter的界面主要分为:菜单栏.工具栏.计划树标签栏.内容栏 ...
- jenkins配置--上传代码,定时执行用例,发送测试报告
1.安装条件:jdk1.8以上的,百度jenkin进入官网--download ,根据需要的版本下载 2.jenkins概念:持续集成,jenkins开源属于插件式形式进行管理的,选择性的装插件,支持 ...
- 访问控制列表ACL应用
ACL的应用的场景 应用在三层接口 • Nat地址转换 Nat(network address translation,地址转换)是将数据报报头中的ip地址转换为另一个ip地址的过程,主要用于实现内部 ...
- 2020-2021-1 20209307 《Linux内核原理与分析》第八周作业
这个作业属于哪个课程 <2020-2021-1Linux内核原理与分析)> 这个作业要求在哪里 <2020-2021-1Linux内核原理与分析第八周作业> 这个作业的目标 & ...
- Vue - 与后端交互
零:与后端交互 - ajax 版本1 - 出现了跨域问题 前端:index.html <!DOCTYPE html> <html lang="en"> &l ...
- Python读写EXCEL文件常用方法大全
前言 python读写excel的方式有很多,不同的模块在读写的讲法上稍有区别,这里我主要介绍几个常用的方式. 用xlrd和xlwt进行excel读写: 用openpyxl进行excel读写: 用pa ...
- 工具-绿色使用软件等-破解pycharm,idea等Jet brain出品软件(99.2.1)
1.下载此文件链接:https://pan.baidu.com/s/12nbtgeWiD1xKMtPIr-S1-g密码:b66f 并将 JetbrainsCrack-3.1-release-enc.j ...
- Python3和高性能全文检索引擎Redisearch进行交互
安装 pip install redisearch 使用 from redisearch import Client, TextField # 创建一个客户端与给定索引名称 client = Clie ...
- JavaScript之作用域-作用域链
作用域 ==> 作用域链 作用域:变量可以其作用的区域(声明定义好一个变量,变量可以在哪些范围内使用) 分类:全局作用域和局部作用域(函数作用域):在js中,目前全局有作用域以及函数可以形成 ...
- DRF之访问权限控制和访问频率控制(节流)
权限控制 前言 用户验证用户权限,根据不同访问权限控制对不同内容的访问. 建议了解视图.token验证的内容. 使用流程 自定义访问权限类,继承BasePermission,重写has_permiss ...