本文适合对图形表现有兴趣的美术或者开发人员

本文作者:HelloGitHub-Joey

早期的的显示设备像素颗粒较大,使得显示内容的颗粒感严重,像是由一堆方块组成的。比较好的例子就是 GBA 上的游戏,相信这也是很多朋友宝贵的童年回忆。这种艺术风格一直延续到现在,虽然显示设备的分辨率已经足以显示非常细腻的画面,但还是有不少人偏爱像素风格的游戏与艺术画。

像素(Pixel)的概念对应到 3D 空间中就是体素(Voxel),使用离散的基本单位来表示 3D 空间中的物体,最直白的理解就是一个个小方块,“我的世界”就是一款非常著名的体素游戏。

这里是 HelloGitHub 推出的《讲解开源项目》系列,今天要介绍的体素编辑器 Goxel 就是一款用来创作 3D 体素艺术作品的编辑器。有了它人人都可以尝试自己制作出 3D 像素作品,回味童年的味道。

项目地址:https://github.com/guillaumechereau/goxel

一、快速开始

Goxel 是一款开源的体素编辑器,提供跨平台支持包括 iOSAndroid 与在线网页版。软件内部使用稀疏矩阵存储数据,使得其可以支持非常大规模的场景编辑。完成编辑后,软件支持导出包括 glTF2.0obj 在内的多种 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 工具栏按钮介绍

工具栏按钮使用红框划出,分为两类:撤销重做笔刷控制

撤销重做部分(左边三个按钮)包含了:撤销重做清空当前层 三个功能按钮,提供笔刷历史控制,可以以单次左键按下滑动操作为单位的撤销与重做。第三个按钮提供了清空当前图层所有体素的功能。

笔刷控制部分包含右边四个按钮,其中前三个按钮为笔刷模式按钮,第四个按钮用来控制笔刷作用的体素颜色。笔刷模式包括:

  1. 增加体素模式,鼠标拖动添加当前设定颜色的体素
  2. 删减体素模式,鼠标拖动删减轨迹上的体素
  3. 修改颜色模式,鼠标拖动将轨迹上体素的颜色修改为当前设定颜色

2.2 左边栏按钮简介

根据图中标识的序号对各个按钮进行功能简介:

  1. 工具栏分页,点击后会弹出具体的工具列表,包括笔刷,平面蒙板,模糊选择,颜色拾取,程序化生成等工具
  2. 色板分页,点击后会弹出常用的预设颜色列表
  3. 图层管理页,非常类似 Photoshop 中的图层概念,可以在各个图层中单独绘制体素,该分页提供了图层的增删显示控制
  4. 显示控制,点击后会弹出全局显示控制的选项,此部分仅控制画面显示效果,对编辑不影响
  5. 材质控制,点击后会弹出全局体素的材质控制选项,包含简单的粗糙度,金属度等属性控制
  6. 灯光控制,点击后会弹出整体环境灯光的控制选项
  7. 相机控制,点击后会弹出相机控制的分页,在此分页可以增减相机,并在多个机位间切换。另外也可控制相机的位置朝向,并提供了若干正视视角的预设摄像机角度
  8. 画幅控制,此部分提供了整体 3D 空间的相对位置与大小控制项
  9. 渲染,点击此按钮后会开始离线渲染过程,将当前相机视角下的画面使用离线渲染算法渲染出来,具体的效果与上面灯光材质分页中的设置相关联,完成渲染后可保存图片
  10. 导出分页,此分页中提供了将当前编辑结果导出成其他 3D 格式文件的选项

三、使用建议

我测试了 LinuxMaciOS 以及 Web 这四个平台,各平台情况总结如下:

  1. Linux 平台需要编译安装,编译过程很顺利,但存在严重界面 bug,导致无法使用,不建议
  2. Mac 平台上使用触摸板手势支持不太完整,若使用鼠标的话体验较为良好
  3. iOS 平台上个人认为是使用体验最好的,手势支持完整,所见即所得,官网上的宣传视频即是使用 iPad Pro演示
  4. Web 的菜单栏按钮无法使用,但导出功能可以使用左边栏中按钮完成,不影响使用,是最方便的体验方式

四、作品展示

以下图片来自官网Gallery页

五、最后

曾在各种视频内容中看到过作者在 MC 中创造各种美丽的景观,实现各种有趣的想法,现在使用这款编辑器亦可做到相同的事情,加上编辑器内提供的各种操作工具,能够使创作者们更加方便快捷地去绘制添加体素,更加自由且快速地实现自己的想法。软件支持的导出格式亦可将作品转移到其他 3D 软件中进行进一步加工制作,成为一个完整的 voxel art 作品。

此外,作为一个开源项目,如果如果在使用过程中发现一些可以改进的点且有开发能力的话,也可尝试与项目维护人员沟通交流,确定开发计划并回馈社区,帮助软件改善的同时亦能对自己的简历增加一个亮眼的经历。

记忆中的像素块褪色了吗?用开源的体素编辑器重新做个 3D 的吧!的更多相关文章

  1. 在HTML中如何把块的边框做成圆角

    adius,就是半径的意思.用这个属性可以很容易做出圆角效果,当然,也可以做出圆形效果.原理很简单,“正方形的内切圆的半径等于正方形边长的一半”.下面就做一个红色的圆. 工具/原料 Adobe Dre ...

  2. java中静态代码块,构造代码块,以及构造方法的执行顺序

    写了许久的代码,却把一些基础的东西都给忘了,今天无聊就顺手写了个,然后测试下,发现跟我记忆中的竟然有些出入,作为一个两年的开发,我感觉自己很失败啊. 父类pojo: public class Pojo ...

  3. java 子类、父类中静态代码块、字段,非静态代码块、字段以及构造函数的初始化顺序和次数

    一个类中的数据初始化顺序是面试官非常喜欢出的面试题之一,本文用一个实例来介绍java中子类.父类中静态代码块.字段,非静态代码块.字段以及构造函数的执行顺序和次数. 一.包结构

  4. Service 中添加同步块防止并发 重复

    Service 中添加同步块防止并发 重复. synchronized(this){}

  5. ORA-00379 缓冲池 DEFAULT 中无法提供 32K 块大小的空闲缓冲区

    (一)问题 今天在使用Pl/sql developer查看表空间大小的时候,报错误:ORA-00379 缓冲池 DEFAULT 中无法提供 32K 块大小的空闲缓冲区,具体如下图: SQL> s ...

  6. 删除外部dwg中指定的块定义

    本例实现删除外部图纸中指定的块定义,在外部图纸当前模型空间中是没有该块定义的块参照存在. 代码如下: void CBlockUtil::DeleteBlockDefFormOtherDwg(const ...

  7. 【Java基础】2、Java中普通代码块,构造代码块,静态代码块区别及代码示例

    Java中普通代码块,构造代码块,静态代码块区别及代码示例.Java中普通代码块,构造代码块,静态代码块区别及代码示例 执行顺序:静态代码块>静态方法(main方法)>构造代码块>构 ...

  8. javascript中不存在块级作用域,所以要小心使用在块级作用域中的函数声明所带来的作用域混乱.

    在javascript中函数的作用域是一个非常重要的概念. javascript中是没有块级作用域,但是有函数作用域的概念. 我们在开发的过程中,经常会遇到这样的问题, 某个函数我暂时不需要,不想声明 ...

  9. OpenGL中的像素包装理解

    OpenGL中的像素包装理解 像素包装 位图和像素图很少会被紧密包装到内存中.在许多硬件平台上,考虑到性能的原因位图和像素图的每一行的数据会从特殊的字节对齐地址开始.绝大多数编译 器会自动把变量和缓冲 ...

随机推荐

  1. MySQL01-数据库概述

    1.概述 1.1 什么是数据库? 用于存储和管理数据的仓库. 1.2 数据库的特点: 1. 持久化存储数据的.其实数据库就是一个文件系统 2. 方便存储和管理数据 3. 使用了统一的方式操作数据库 - ...

  2. MySQL-实体映射关系和连接查询

     一 数据库实体的映射关系 1. 一对一:学生表和学生档案表,一个学生只有一个对应的档案. 2. 一对多/多对一:一个球队友多个球员(一对多),多个球员属于一个球队(多对一) 3. 多对多:一个学生可 ...

  3. bp VNext 入门——让ABP跑起来

    因好多群友@我说,ABP他们简单的了解了下,按照官方的教程一路下来跑不起来(倒在了入门的门口),才有了此文. 此文结合官方文档,一步一步带领大家让ABP跑起来(跨过门口). 建议大家一步一步实际动手操 ...

  4. cmd.exe解释器漏洞

    安全研究员Julian Horoszkiewicz发现了cmd.exe命令行解释器中的漏洞,该漏洞允许执行任意命令. 在寻找新的攻击媒介以允许Windows中注入命令时,Khoroshkevich发现 ...

  5. <未解决的问题>crontab 定时弹框任务

    问题:crontab写别的定时脚本就可以执行(比如说每隔一分钟就创建一个txt文件),但是写shell就不知道为什么,反弹不了 但是开启Linux终端窗口单独执行bash shell时候,(不通过re ...

  6. 第九章 Nacos Config--服务配置

    今天咱们接着 上一篇 第八章 SMS–短信服务 继续写 SpringCloud Alibaba全家桶 -> 第九章 Nacos Config–服务配置,废话不多说,开干 9.1 服务配置中心介绍 ...

  7. nodeJS中的事件机制

    events模块是node的核心模块,几乎所有常用的node模块都继承了events模块,比如http.fs等.本文将详细介绍nodeJS中的事件机制 EventEmitter 多数 Node.js ...

  8. 一文搞懂 CountDownLatch 用法和源码!

    CountDownLatch 是多线程控制的一种工具,它被称为 门阀. 计数器或者 闭锁.这个工具经常用来用来协调多个线程之间的同步,或者说起到线程之间的通信(而不是用作互斥的作用).下面我们就来一起 ...

  9. Ubuntu虚拟机无网络连接的问题

    记录一下: 通过dhcp动态分配ip地址. sudo dhclient -v 应该就能解决了.

  10. MySQL5.7.26安装及启动报错解决

    一.安装依赖包 [root@db01 ~]# yum install -y lrzsz [文件上传/下载] [root@db01 ~]# yum -y install xfsprogs [安装磁盘格式 ...