Giter Site home page Giter Site logo

guillaumechereau / goxel Goto Github PK

View Code? Open in Web Editor NEW
2.7K 83.0 219.0 53.97 MB

Goxel: Free and Open Source 3D Voxel Editor

License: GNU General Public License v3.0

Makefile 0.01% Python 0.08% C 50.28% C++ 49.42% POV-Ray SDL 0.01% Swift 0.10% GLSL 0.10% JavaScript 0.01%
voxel-editors voxels

goxel's Introduction

Goxel

Version 0.14.0

By Guillaume Chereau [email protected]

Build Status DebianBadge

Official webpage: https://goxel.xyz

About

You can use goxel to create voxel graphics (3D images formed of cubes). It works on Linux, BSD, Windows and macOS.

Download

The last release files can be downloaded from there.

Goxel is also available for iOS and Android.

goxel screenshot 0 Fisherman house, made with Goxel by Thibault Simar

Licence

Goxel is released under the GNU GPL3 licence. If you want to use the code with a commercial project please contact me: I am willing to provide a version of the code under a commercial license.

Features

  • 24 bits RGB colors.
  • Unlimited scene size.
  • Unlimited undo buffer.
  • Layers.
  • Marching Cube rendering.
  • Procedural rendering.
  • Export to obj, pyl, png, magica voxel, qubicle.
  • Ray tracing.

Usage

  • Left click: apply selected tool operation.
  • Middle click: rotate the view.
  • right click: pan the view.
  • Left/Right arrow: rotate the view.
  • Mouse wheel: zoom in and out.

Building

The building system uses scons. You can compile in debug with 'scons', and in release with 'scons mode=release'. On Windows, currently possible to build with msys2 or try prebuilt goxel package directly. The code is in C99, using some gnu extensions, so it does not compile with msvc.

Linux/BSD

Install dependencies using your package manager. On Debian/Ubuntu:

- scons
- pkg-config
- libglfw3-dev
- libgtk-3-dev

Then to build, run the command:

make release

Windows

You need to install msys2 mingw, and the following packages:

pacman -S mingw-w64-x86_64-gcc
pacman -S mingw-w64-x86_64-glfw
pacman -S mingw-w64-x86_64-libtre-git
pacman -S scons
pacman -S make

Then to build:

make release

Contributing

In order for your contribution to Goxel to be accepted, you have to sign the Goxel Contributor License Agreement (CLA). This is mostly to allow me to distribute the mobile branch goxel under a non GPL licence.

Also, please read the contributing document.

Donations

I you feel like it, you can support the development of Goxel with a donation at the following bitcoin address: 1QCQeWTi6Xnh3UJbwhLMgSZQAypAouTVrY

goxel's People

Contributors

akien-mga avatar alexander-wilms avatar black-cat avatar bmwiedemann avatar djcas9 avatar evandandrea avatar federicoceratto avatar guillaumechereau avatar jeyum2 avatar johnnynator avatar josiahneuberger avatar latorredev avatar madd-games avatar mailaender avatar mdtrooper avatar ntfwc avatar pegvin avatar podsvirov avatar popey avatar randomairborne avatar ravencgg avatar rokyed avatar sariug avatar unrud avatar valpackett avatar vvbalashoff avatar xyproto avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

goxel's Issues

Procedural rendering language documentation

I see the feature as the most interesting part of this software, but unfortunately I haven't found any description of the language used and it's features. Any plans to document it?

Import .vox bug

Goxel is fantastic, but the import of the .vox models MagicaVoxel does not work and creates the tool crashes.

The last commit back to two months ago, do not give up this gem!

I would like to work together, even if you are not a programmer. My email: [email protected] If a tester is useful I can do it willingly.

There is a forum, and the only contact is twitter (not use), so I had no other way to contact you guys. Thanks for your attention.

Greetings.

Export resolution cant be typed in

When I try to type-in exact width & height resolution values, it doesn't work. After setting value and hitting enter, value stays the same and cursor in the field keeps on blinking. So currently only way to edit values is by using arrow buttons (at least on my machines, both OSX Yosemite).

Procedural object does not appear until i switch to brush tool goxel 0.7

after placing a procedural object i have to switch to the brush tool before it arrears. the code will run until completion but nothing will appear until i switch to the brush tool. if i switch before the code has finished i get a snapshot of its current progress at witch point i have to change to some other tool and then change back to the brush to see it update.
This has occurred on 3 different computers for me 2 running windows 10 one running windows 7.

goxel does not load procedural generated objects

after placing an procedural object the code runs but nothing will appear unitll you select the brush tool.at which point all generated voxels pop into existence. If you switch to the brush while the code is running you get a snapshot of what has been generated and you must switch to some other tool and then back to update it.
i have tested this on three separate computers 2 running windows 10 1 running windows 7, one of the windows 10 computers was AMD the other 2 Intel.

Work for iOS?

Has anyone compiled this sucessfully for the iPad / iOS?

Thanks!

Enhance procedural tools with WaveFunctionCollapse

Here is link to project:
https://github.com/mxgmn/WaveFunctionCollapse

As you can see in part titled "Higher dimensions", that code can be also used for voxels.
Results look very organic. It would be huge to have something like this to generate environments or other big structures.
I imagine that it could work this way: user select layer(s) as input data, configure variables in script (like target volume), run script to generate voxels

error: passing argument 6 of ‘model3d_render’ makes integer from pointer without a cast [-Werror]

Hi.

Your project is awesome, thanks for your work.

But the last code in the repository does not compile. The error message is:

$ make release
scons debug=0
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
gcc -o src/render.o -c -Wall -Werror -std=gnu99 -Wno-unknown-pragmas -O3 -DNDEBUG -D_FORTIFY_SOURCE=2 -pthread -Isrc -Iext_src/uthash -Iext_src/stb -Iext_src/imgui -I/usr/include/gtk-3.0 -I/usr/include/atk-1.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/pango-1.0 -I/usr/include/gio-unix-2.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/harfbuzz -I/usr/include/freetype2 -I/usr/include/pixman-1 -I/usr/include/libpng12 src/render.c
src/render.c: In function ‘render_grid_item’:
src/render.c:650:24: error: passing argument 6 of ‘model3d_render’ makes integer from pointer without a cast [-Werror]
                        false, NULL, 32, &center);
                        ^
In file included from src/render.c:20:0:
src/goxel.h:691:6: note: expected ‘int’ but argument is of type ‘void *’
 void model3d_render(model3d_t *model3d,
      ^
cc1: all warnings being treated as errors
scons: *** [src/render.o] Error 1
scons: building terminated because of errors.
make: *** [release] Error 2

Input is extremely fast.

All input has effect exceedingly quickly, just a half second tap of the left arrow will move the pointer in the code box about 20-30 characters worth of code left. the same happens when rotating the view with key presses or trying to change the the values in boxes by clicking buttons on either side, a half second will change most from negative 1 to positive 1.
i am running windows 10
AMD fx8320, overclocked if that matters.
radeon r9 280x
asrock fatal1ty 990fx motherboard

Image plane import minor issue

Imported image plane can't be removed or replaced by other image file. Each image import, adds image to existing ones. That causes distortions and flickering while moving camera.

IMHO Image Plane would be more useful with option to turn off smoothing. Now it looks out of place when used as a ground for model. Using it as a reference for drawing model is also hard because of blurriness.

Support importing/exporting Voxlap format (.vxl and .kv6)

It should be great to allow importing/exporting files used by the games Ace of Spades/OpenSpades (which use the Voxlap engine).

The map files (*.vxl) might be too large for editing in Goxel (they are actually describing a volume of 512x512x64 voxels).

But the models files (*.kv6) are already editable with VoxelShop. Supporting this format in Goxel should be great !

More strict compiler on linux got errors

When compiling, I had error about misleading indentation in ext_src/stb/stb_image.h. This is not a real error, but it's pretty obvious : in this file, you use defines to create case with "for" clause with one line instruction, but the compiler can't figure it out with the combine case-for and the last break instruction in the same line.

I corrected the file by adding brackets around the single instruction for the "for" instruction.
There is three block of these:

  • line 1360
  • line 4090
  • line 4100

On Archlinux, ASan runtime does not come first.

When I try to run, The program die with this error :

==9523==ASan runtime does not come first in initial library list; you should either link runtime to your application or manually preload it with LD_PRELOAD.

I'me on a up-to-date Archlinux.

Increase max resolution of exported image

Talking about export, would it be very time consuming to increase max export resolution from 2048x2048 to 4096x4096? Higher resolution gives very nice edges without need for antialiasing, and gives more flexibility when i.e. editing assets for non-3D animation.

Single-tab Problem for Macbook Pro

In my macbook, you can tap or physically press the click on touchpad. Even thought my single-tab is interpreted as a physical click, the application is not listening that gesture. I had to physically click in my touchpad.

Great app by the way.

Indication of selection size & move tool modes

Now, there is no way to tell what is exact size of selection. It is not a big deal, until something precise needs to be done. Now I'm trying to cut my model into smaller pieces of same sizes, to make tiles out of them. It is doable by counting voxels on screen, but eyes hurt and time is wasted :)

I got few suggestions that could improve Goxel workflow not only in this particular case.
I think right bottom corner could be used for showing size (or other currently affected) values, as You can see on this crude mockup:
goxel_selection1

Move tool modes - current move tool moves content of whole layer (move: layer content). Two more modes would be very useful. 'Move: selection content' - moves selection box & voxels inside of it. 'Move: selection box' - moves just selection box.

goxel_selection3

Moving selection by distance that is same as it's size (shortcut maybe? extra setting in move tool, 'move by size iterations'?). Like here selection size is 64 voxels, so selection goes to next adjacent region on selected axis:
goxel_selection2

Can't import Color material in Unity3D

Hi, I made a simple map using goxel and exported as .obj file but when I import the file in Unity3D the colors of the map which I used inside goxel editor did not imported in Unity.

Goxel 0.7.0 not running on Windows

It shows this message, and closes.

error

Assertion failed!

Program: C:\Users\kmsi\Downloads\goxel.exe
File: C:/repo/mingw-w64-glfw/src/glfw-3.2.1/src/input.c, Line 526

Expression: window != NULL

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

Can't compile on MacOS

Hello

I can't compile Goxel anymore on MacOS 10.12.6 with Xcode 8.3.3 installed. Hope it can be fixed, thanks in advance!

Here is what I got if I try to compile latest version:

Michals-iHack:goxel michal$ xcodebuild build -verbose CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO
Build settings from command line:
CODE_SIGN_IDENTITY =
CODE_SIGNING_REQUIRED = NO

=== BUILD TARGET goxel OF PROJECT goxel WITH THE DEFAULT CONFIGURATION (Release) ===

Check dependencies

Write auxiliary files
/bin/mkdir -p /Volumes/Ryzyko_1/goxel-master/osx/goxel/build/SharedPrecompiledHeaders/goxel-ctapuiofkyobafebyqjcnyliprzr
write-file /Volumes/Ryzyko_1/goxel-master/osx/goxel/build/SharedPrecompiledHeaders/goxel-ctapuiofkyobafebyqjcnyliprzr/goxel.pch.pch.hash-criteria
write-file /Volumes/Ryzyko_1/goxel-master/osx/goxel/build/goxel.build/Release/goxel.build/Objects-normal/x86_64/goxel-OutputFileMap.json
/bin/mkdir -p /Volumes/Ryzyko_1/goxel-master/osx/goxel/build/SharedPrecompiledHeaders/goxel-fvzpwsdttjildqgcnvhrhargqdrb
write-file /Volumes/Ryzyko_1/goxel-master/osx/goxel/build/SharedPrecompiledHeaders/goxel-fvzpwsdttjildqgcnvhrhargqdrb/goxel.pch.pch.hash-criteria
write-file /Volumes/Ryzyko_1/goxel-master/osx/goxel/build/goxel.build/Release/goxel.build/Objects-normal/x86_64/goxel.LinkFileList
write-file /Volumes/Ryzyko_1/goxel-master/osx/goxel/build/goxel.build/Release/goxel.build/goxel.hmap
write-file /Volumes/Ryzyko_1/goxel-master/osx/goxel/build/goxel.build/Release/goxel.build/goxel-project-headers.hmap
/bin/mkdir -p /Volumes/Ryzyko_1/goxel-master/osx/goxel/build/SharedPrecompiledHeaders/goxel-fzlwlygzipgbrueaucvsorasdtwf
write-file /Volumes/Ryzyko_1/goxel-master/osx/goxel/build/SharedPrecompiledHeaders/goxel-fzlwlygzipgbrueaucvsorasdtwf/goxel.pch.pch.hash-criteria

CompileSwiftSources normal x86_64 com.apple.xcode.tools.swift.compiler
cd /Volumes/Ryzyko_1/goxel-master/osx/goxel
export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer
export SDKROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc -incremental -module-name goxel -O -whole-module-optimization -sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk -target x86_64-apple-macosx10.9 -g -Xfrontend -serialize-debugging-options -I /Volumes/Ryzyko_1/goxel-master/osx/goxel/build/Release -F /Volumes/Ryzyko_1/goxel-master/osx/goxel/build/Release -parse-as-library -c -num-threads 8 /Volumes/Ryzyko_1/goxel-master/osx/goxel/goxel/AppDelegate.swift -output-file-map /Volumes/Ryzyko_1/goxel-master/osx/goxel/build/goxel.build/Release/goxel.build/Objects-normal/x86_64/goxel-OutputFileMap.json -parseable-output -serialize-diagnostics -emit-dependencies -emit-module -emit-module-path /Volumes/Ryzyko_1/goxel-master/osx/goxel/build/goxel.build/Release/goxel.build/Objects-normal/x86_64/goxel.swiftmodule -Xcc -I/Volumes/Ryzyko_1/goxel-master/osx/goxel/build/goxel.build/Release/goxel.build/swift-overrides.hmap -Xcc -iquote -Xcc /Volumes/Ryzyko_1/goxel-master/osx/goxel/build/goxel.build/Release/goxel.build/goxel-generated-files.hmap -Xcc -I/Volumes/Ryzyko_1/goxel-master/osx/goxel/build/goxel.build/Release/goxel.build/goxel-own-target-headers.hmap -Xcc -I/Volumes/Ryzyko_1/goxel-master/osx/goxel/build/goxel.build/Release/goxel.build/goxel-all-target-headers.hmap -Xcc -iquote -Xcc /Volumes/Ryzyko_1/goxel-master/osx/goxel/build/goxel.build/Release/goxel.build/goxel-project-headers.hmap -Xcc -I/Volumes/Ryzyko_1/goxel-master/osx/goxel/build/Release/include -Xcc -I/Volumes/Ryzyko_1/goxel-master/osx/goxel/../../src -Xcc -I/Volumes/Ryzyko_1/goxel-master/osx/goxel/build/goxel.build/Release/goxel.build/DerivedSources/x86_64 -Xcc -I/Volumes/Ryzyko_1/goxel-master/osx/goxel/build/goxel.build/Release/goxel.build/DerivedSources -emit-objc-header -emit-objc-header-path /Volumes/Ryzyko_1/goxel-master/osx/goxel/build/goxel.build/Release/goxel.build/Objects-normal/x86_64/goxel-Swift.h -import-objc-header /Volumes/Ryzyko_1/goxel-master/osx/goxel/goxel/goxel-Bridging-Header.h -Xcc -working-directory/Volumes/Ryzyko_1/goxel-master/osx/goxel

CompileSwift normal x86_64 /Volumes/Ryzyko_1/goxel-master/osx/goxel/goxel/AppDelegate.swift
cd /Volumes/Ryzyko_1/goxel-master/osx/goxel
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift -frontend -c /Volumes/Ryzyko_1/goxel-master/osx/goxel/goxel/AppDelegate.swift -target x86_64-apple-macosx10.9 -enable-objc-interop -sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk -I /Volumes/Ryzyko_1/goxel-master/osx/goxel/build/Release -F /Volumes/Ryzyko_1/goxel-master/osx/goxel/build/Release -g -serialize-debugging-options -Xcc -I/Volumes/Ryzyko_1/goxel-master/osx/goxel/build/goxel.build/Release/goxel.build/swift-overrides.hmap -Xcc -iquote -Xcc /Volumes/Ryzyko_1/goxel-master/osx/goxel/build/goxel.build/Release/goxel.build/goxel-generated-files.hmap -Xcc -I/Volumes/Ryzyko_1/goxel-master/osx/goxel/build/goxel.build/Release/goxel.build/goxel-own-target-headers.hmap -Xcc -I/Volumes/Ryzyko_1/goxel-master/osx/goxel/build/goxel.build/Release/goxel.build/goxel-all-target-headers.hmap -Xcc -iquote -Xcc /Volumes/Ryzyko_1/goxel-master/osx/goxel/build/goxel.build/Release/goxel.build/goxel-project-headers.hmap -Xcc -I/Volumes/Ryzyko_1/goxel-master/osx/goxel/build/Release/include -Xcc -I/Volumes/Ryzyko_1/goxel-master/osx/goxel/../../src -Xcc -I/Volumes/Ryzyko_1/goxel-master/osx/goxel/build/goxel.build/Release/goxel.build/DerivedSources/x86_64 -Xcc -I/Volumes/Ryzyko_1/goxel-master/osx/goxel/build/goxel.build/Release/goxel.build/DerivedSources -Xcc -working-directory/Volumes/Ryzyko_1/goxel-master/osx/goxel -emit-module-doc-path /Volumes/Ryzyko_1/goxel-master/osx/goxel/build/goxel.build/Release/goxel.build/Objects-normal/x86_64/goxel.swiftdoc -serialize-diagnostics-path /Volumes/Ryzyko_1/goxel-master/osx/goxel/build/goxel.build/Release/goxel.build/Objects-normal/x86_64/AppDelegate.dia -import-objc-header /Volumes/Ryzyko_1/goxel-master/osx/goxel/goxel/goxel-Bridging-Header.h -O -parse-as-library -module-name goxel -emit-module-path /Volumes/Ryzyko_1/goxel-master/osx/goxel/build/goxel.build/Release/goxel.build/Objects-normal/x86_64/goxel.swiftmodule -emit-objc-header-path /Volumes/Ryzyko_1/goxel-master/osx/goxel/build/goxel.build/Release/goxel.build/Objects-normal/x86_64/goxel-Swift.h -emit-dependencies-path /Volumes/Ryzyko_1/goxel-master/osx/goxel/build/goxel.build/Release/goxel.build/Objects-normal/x86_64/AppDelegate.d -num-threads 8 -o /Volumes/Ryzyko_1/goxel-master/osx/goxel/build/goxel.build/Release/goxel.build/Objects-normal/x86_64/AppDelegate.o
/Volumes/Ryzyko_1/goxel-master/osx/goxel/goxel/AppDelegate.swift:47:23: error: value of type 'inputs_t' (aka 'inputs') has no member 'mouse_pos'
appDelegate().inputs.mouse_pos = vec2(
~~~~~~~~~~~~~~^~~~~~ ~~~~~~~~~
/Volumes/Ryzyko_1/goxel-master/osx/goxel/goxel/AppDelegate.swift:53:31: error: value of type 'inputs_t' (aka 'inputs') has no member 'mouse_down'
case 0: appDelegate().inputs.mouse_down.0 = (state != 0);
~~~~~~~~~~~~~~^~~~~~ ~~~~~~~~~~
/Volumes/Ryzyko_1/goxel-master/osx/goxel/goxel/AppDelegate.swift:54:31: error: value of type 'inputs_t' (aka 'inputs') has no member 'mouse_down'
case 1: appDelegate().inputs.mouse_down.1 = (state != 0);
~~~~~~~~~~~~~~^~~~~~ ~~~~~~~~~~
/Volumes/Ryzyko_1/goxel-master/osx/goxel/goxel/AppDelegate.swift:55:31: error: value of type 'inputs_t' (aka 'inputs') has no member 'mouse_down'
case 2: appDelegate().inputs.mouse_down.2 = (state != 0);
~~~~~~~~~~~~~~^~~~~~ ~~~~~~~~~~

** BUILD FAILED **

The following build commands failed:
CompileSwift normal x86_64 /Volumes/Ryzyko_1/goxel-master/osx/goxel/goxel/AppDelegate.swift
CompileSwiftSources normal x86_64 com.apple.xcode.tools.swift.compiler
(2 failures)

Window focus not placing voxel

When the editor window is not focused and I click into the working area to focus goxel, I instantly paint a voxel. Would be great if the application would only paint when it's already focused.

Support of colour palettes in .ase format

Adobe ASE format is common for exchange palettes between graphic design apps and colour palette creation software. Support for loading ASE files would improve colour management in Goxel.
Maybe there could be 'Palettes' folder, from which Goxel would load all ASE palettes and add them to ones that are built-in.
Here are materials that might be useful while evaluating and (maybe) implementing this feature:

Unofficial format spec (for details of format, scroll below table)
http://www.selapa.net/swatches/colors/fileformats.php

Existing implementations
http://www.colourlovers.com/ase.phps
https://github.com/hughsk/adobe-swatch-exchange
https://github.com/andrewfiorillo/ase-to-sketchpalette/tree/master/js

Goxel makes corrupted vxls

Hello.
First of all, thank you for making such a great voxel editor ;)

But I noticed an issue :
Exporting .gox with 63-block height to .vxl makes corrupted files, while 62-block height file are exported sucessfully. VXL supports up to 63 blocks, so It should be fine.

Here's my .gox file and its output .vxl file :
Source.zip

I used goxel 0.6 on Windows 10 Pro x64.

Segfault using "see back"

Immediately after checking the "see back" box under advanced render settings, the application crashes with this message:

** (goxel:30609): WARNING **: Error retrieving accessibility bus address: org.freedesktop.DBus.Error.ServiceUnknown: The name org.a11y.Bus was not provided by any .service files
[1]    30609 segmentation fault  ./goxel

Obj Export

The obj Export does not seem to work correctly, it looks somewhat distorted after importing it in e.g. Unity. Did not yet look into the exporting so I can not give you any Details on it, but i will as soon as I find the time.

Compilation error with 'qubicle_export'

Get this trying to compile on an up-to-date Antergos (Arch-based)

src/formats/qubicle.c: In function ‘qubicle_export’:
src/formats/qubicle.c:139:24: error: ‘%d’ directive writing between 1 and 10 bytes into a region of size 8 [-Werror=format-overflow=]
         sprintf(buff, "%d", i);
                        ^~
src/formats/qubicle.c:139:23: note: directive argument in the range [0, 2147483647]
         sprintf(buff, "%d", i);
                       ^~~~
src/formats/qubicle.c:139:9: note: ‘sprintf’ output between 2 and 11 bytes into a destination of size 8
         sprintf(buff, "%d", i);
         ^~~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
scons: *** [src/formats/qubicle.o] Error 1
scons: building terminated because of errors.
make: *** [Makefile:6: release] Error 2

Magica Voxel format not OK

Tried to generate some structure and export it to Magica Voxel but the resulting .vox file is not being opened in Magica Voxel.
Went back to just actually saving one block and had a look at the binary format - that seemed quite different. I don't know much about the format specs so I can't give a lot more information.

Bottom line - the export to magica voxel is not really working.

Cheers

P.S.: LOVE the procedural generative part!!! Still addicted to Structure Synth and that is as close as it gets!!

Export as layered BMP

That is, a sprite sheet where each sprite represents a layer. This is possible through vox2png and gimp, but it would be easier if it was possible to do directly in goxel.

osx build

what keeps you from supporting osx? I tried to build and it looks like a simple problem:

scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
g++ -o ext_src/imgui/imgui.o -c -Wno-narrowing -DIMGUI_INCLUDE_IMGUI_USER_INL -Wall -Werror -g -Isrc -Iext_src/uthash -Iext_src/stb -Iext_src/imgui ext_src/imgui/imgui.cpp
In file included from ext_src/imgui/imgui.cpp:8938:
src/imgui_user.inl:83:31: error: format string is not a string literal (potentially insecure) [-Werror,-Wformat-security]
            ImGui::SetTooltip(name);
                              ^~~~
1 error generated.
scons: *** [ext_src/imgui/imgui.o] Error 1
scons: building terminated because of errors.

./goxel (almost always) segfaults upon launching

I'm on Linux Mint 17.3 KDE. I built from source with make release, but now every time I launch:
[1] 11525 segmentation fault ./goxel
The '11525' in that error increments every time I try to execute, usually by about 10 or 15.
Once, it launched successfully, but I've tried dozens of times and it hasn't stayed open for more than a fraction of a second.

Add LICENSE file

Right now the individual source files in src/ have a proper GPLv3+ license notice but there is no copy of the license in the repository, which means that files that don't have the license notices (like images) could be considered proprietary by some people (even if the README is pretty clear).

A copy of the GPLv3 should be included in a file called LICENSE or COPYING. Here is the text of the license: https://www.gnu.org/licenses/gpl-3.0.txt

text is TINY on hi-dpi monitors

Could you add an option for font size? On a hi-dpi monitor, the UI text looks like grains of dust :)

For comparison, in my own apps, I use 28 as the size for Roboto on hidpi, and 20 as the size for a smaller font for use in tooltips and the like.

goxel 0.7 crashes when pressing the "show desktop" button.

when i press the show desktop button in the bottom right hand corner of my screen goxel will crash.
I have tested this on two computers one running windows 7 another running windows 10, one intel the other amd. it occurs on both.
capture

Linux build issues

I don't know anything about scons so I can't patch it, but here's what I had to do to compile this on x86-64 openSUSE 13.2:

  • First I had to change LIBS variable to use glfw3 instead of glfw.
  • Then there were a lot of "undefined symbol" errors, to fix them I had to pass these to the C compiler: -lX11 -lXxf86vm -lXi -lXinerama -lXcursor -lXrandr.

Since I don't know scons, I had to manually run the failed command with those extra arguments.

More shortcuts for switching between tools etc.

I wonder if there is any plans for keyboard shortcuts for switching between tools, changing the view, changing between tabs etc. Because it seems pretty important for usability at an early stage.

Thank you.

Precise camera positioning & camera position(s) saving

Something that all voxel editing tools that I know of are lacking, possibility to precisely set camera position, save it & get back to it when needed. Being able to save multiple camera positions would be even better.

Sometimes I find "perfect view" for rendering a model. But then I notice I have to change something, so I zoom in, rotate, edit, then I try again to find view that I liked in the beginning...it is obviously never the same. It is also impossible to make few variations of same model with exactly same camera position.
Another situation that begs for precise camera, exporting frames for full rotation animation i.e. every 45 degrees.

Someone might say this is unnecessary, because I could export my model to other program. But then
I loose all nice stylization options of Goxel (like awesome 'smooth' mode), so I think it is worth considering.

Per layer transparency

Having separate transparency per layer would open a lot options. I see countless use cases for illustration and some more for game dev (i.e. preview of semi-transparent elements like windows without exporting model to Unity). Many effects normally requiring specialised rendering options - like materials - could be achieved just by smart use of this feature. Smoke, clouds, water, fire, crystals, semi-transparent textiles on characters... lots of possibilities bringing more life into image just by combining few layers with different transparency settings. This could be another feature - among few existing - making Goxel stand out positively among other voxel editors.

AZERTY support

Great software ! Pretty useful.

However, just so you know, AZERTY is not supported and we have to hit (CTRL+W) (which equals CTRL+Z i guess) for undo.

I guess all the other key combination have the same problem.

Good work though !

A single question

Hey there! First off, thank you for creating this wonderful software, this is exactly what I was looking for for developing a "Cube World"-like game in which I needed a voxel based software to easily paint terrains etc manually.

I was wondering how did you achieve not having a voxel scene limit. Both Qubicle and MagicaVoxel have a limit in their matrices, they weren't allowing me to paint big environments from scratch, they're only good enough to create single models and animations.

How did you achieve that? And in which point will the software start to perform badly when handling huge scenes?

Freezing while drawing with pen tool with snap on mesh but not plane

  • Start goxel
  • Draw something with pen tool
  • Turn off snapping on plane (leave snapping on mesh on)
  • Draw something
  • It freezes (using 100% cpu while frozen)

For me, reproducible always both in v0.2.0 and master(7e91957). Mac os 10.11.3.

image

Stacktrace:

* thread #1: tid = 0x725095b, 0x0000000100019b30 goxel`mesh_get_block_at(mesh=0x0000000100226430, pos=0x00007fff5fbfe458) + 64 at mesh.c:157, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP
  * frame #0: 0x0000000100019b30 goxel`mesh_get_block_at(mesh=0x0000000100226430, pos=0x00007fff5fbfe458) + 64 at mesh.c:157
    frame #1: 0x0000000100018d28 goxel`add_blocks(mesh=0x0000000100226430, box=box_t @ 0x00007fff5fbfe4b0) + 584 at mesh.c:182
    frame #2: 0x0000000100017c72 goxel`mesh_op(mesh=0x0000000100226430, painter=0x00007fff5fbff358, box=0x00007fff5fbfe920) + 818 at mesh.c:220
    frame #3: 0x00000001000392cb goxel`tool_brush_iter(goxel=0x00007fff5fbff210, inputs=0x00007fff5fbfee10, state=3, view_size=0x00007fff5fbfed60, inside=true) + 1979 at tools.c:358
    frame #4: 0x0000000100038a25 goxel`tool_iter(goxel=0x00007fff5fbff210, tool=1, inputs=0x00007fff5fbfee10, state=3, view_size=0x00007fff5fbfed60, inside=true) + 261 at tools.c:476
    frame #5: 0x000000010000f36a goxel`goxel_mouse_in_view(goxel=0x00007fff5fbff210, view_size=0x00007fff5fbfed60, inputs=0x00007fff5fbfee10, inside=true) + 2186 at goxel.c:402
    frame #6: 0x000000010004ff15 goxel`::gui_iter(goxel=0x00007fff5fbff210, inputs=0x00007fff5fbff590) + 3061 at gui.cpp:1075
    frame #7: 0x000000010000e6ea goxel`goxel_iter(goxel=0x00007fff5fbff210, inputs=0x00007fff5fbff590) + 410 at goxel.c:301
    frame #8: 0x0000000100015426 goxel`loop_function + 518 at main.c:192
    frame #9: 0x0000000100015204 goxel`start_main_loop(func=(goxel`loop_function at main.c:165)) + 52 at main.c:204
    frame #10: 0x00000001000148c6 goxel`main(argc=1, argv=0x00007fff5fbff820) + 630 at main.c:257
    frame #11: 0x00007fff8aed45ad libdyld.dylib`start + 1

  thread #2: tid = 0x72509cf, 0x00007fff97a67ff6 libsystem_kernel.dylib`kevent_qos + 10
    frame #0: 0x00007fff97a67ff6 libsystem_kernel.dylib`kevent_qos + 10
    frame #1: 0x00007fff97ed0099 libdispatch.dylib`_dispatch_mgr_invoke + 216
    frame #2: 0x00007fff97ecfd01 libdispatch.dylib`_dispatch_mgr_thread + 52

  thread #8: tid = 0x72509de, 0x00007fff97a61386 libsystem_kernel.dylib`mach_msg_trap + 10
    frame #0: 0x00007fff97a61386 libsystem_kernel.dylib`mach_msg_trap + 10
    frame #1: 0x00007fff97a607c7 libsystem_kernel.dylib`mach_msg + 55
    frame #2: 0x00007fff9c450624 CoreFoundation`__CFRunLoopServiceMachPort + 212
    frame #3: 0x00007fff9c44faec CoreFoundation`__CFRunLoopRun + 1356
    frame #4: 0x00007fff9c44f338 CoreFoundation`CFRunLoopRunSpecific + 296
    frame #5: 0x00007fff91176065 AppKit`_NSEventThread + 149
    frame #6: 0x00007fff93390c13 libsystem_pthread.dylib`_pthread_body + 131
    frame #7: 0x00007fff93390b90 libsystem_pthread.dylib`_pthread_start + 168
    frame #8: 0x00007fff9338e375 libsystem_pthread.dylib`thread_start + 13

(lldb) frame variable
(const mesh_t *) mesh = 0x0000000100226430
(const vec3_t *) pos = 0x00007fff5fbfe458
(block_t *) block = 0x5fbfeb3080000000
(vec3_t) p = {
   = (x = -2.14748365E+9, y = 0, z = 0)
   = (r = -2.14748365E+9, g = 0, b = 0)
  xy = {
     = (x = -2.14748365E+9, y = 0)
     = (r = -2.14748365E+9, g = 0)
    v = ([0] = -2.14748365E+9, [1] = 0)
  }
  rg = {
     = (x = -2.14748365E+9, y = 0)
     = (r = -2.14748365E+9, g = 0)
    v = ([0] = -2.14748365E+9, [1] = 0)
  }
  v = ([0] = -2.14748365E+9, [1] = 0, [2] = 0)
}

Variables dump in mesh.c: https://gist.github.com/kolen/52f01147631902fac8e5

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.