3D-Coat development process

I am Andrew Shpagin, the developer of 3D-Coat. This is my personal blog devoted to the development of 3D-Coat. This blog is created to give fast and non-official information about 3D-Coat. I will post there daily news, what I am doing now, what features are under development this moment. It could be really interesting for everyone who is interested in 3D-Coat.

Friday, May 16, 2008

3D-Coat SDK

I have published 3D-Coat SDK. It allows to create plugins for export/import of different 3D-files. To start you should download and unpack

http://www.3d-coat.com/files/3D-CoatSDK.rar

Then you shoud open soluton ExportImport.sln. It requires at least MS VisualStudio 2008 Standart Edition to be properly compiled. Compile project. It is better to use “Release” configuration. You will get Odj.DLL file on output. This simple plugin is a sample for importing OBJ files. Obj.DLL should be copied to

$3D-CoatInstallationFolder\Plugins\MeshCodecs\

To understand how plugins work open files cMeshObj.h. You will see there class that is derived from cMeshCodec (It is defined in cIO.h).

class cMeshCodec {

public:

cMeshCodec() {}

       virtual ~cMeshCodec() {}

       virtual cRawMesh * Decode(const cData &Fm) = 0;

       virtual void Encode(const cRawMesh &Mesh, cData *To) = 0;

       virtual bool CanEncode(){return true;}

       virtual bool CanDecode(){return true;}

};

To create new codec you should derive your class from cMeshCodec and re-define functions Encode and Decode. Decode should return filled object cRawMesh and Encode should fill Data structure cData using cRawMesh. You can look and discover objects cData and cRawMesh. After redefining functions you should change class name in ExportImport.cpp. I think it is very easy. The only not so easy task is filling/reading structure cRawMesh. It is mesh that consists of:

uv-sets (see GetUVSets() )

Matrials(surfaces) (see GetMaterials() )

Objects (see GetObjects() )

PositionVertices (see GetPositions() )

UV-vertices (see GetTexCoords() )

Normals (see GetNormals() )

Faces (see GetRaw() )

To understand how it works it is better to discover how cMeshObj.cpp encodes/decodes obj – files. I will explain slightly how Faces list is organised.

Faces are array of cVec3i – 3 integer values

Count, - amount of polygones in face

idMtl = MaterialIndex + (UV-set index<<16) – index of material and uv-set

idObj - index of object

Next “Count” values are 3-indices of vertices that are part of face

PositionIndex (index in array of position vertices)

TexturevertexIndex (index in array of texture vertices, can be -1)

NormalIndex (index in array of normals, can be -1)

The best method to learn is to ask in forum and discover how cMeshObj is done.

Thursday, May 8, 2008

Translating to many languages

I have interesting idea about translating 3D-Coat to very many languages. I know that many peoples want to help to translate 3DC to native language but it seems too difficult because

1) Too many texts for one man

2) It is not so easy to find where texts are stored

2) There is some xml-file - it is not convenuent to translate

Also, using translation agencies is not effective because they usually don't know CG terminology well.

So we started new web project - you will be able to help to translate even if you have 5 free minutes! There will be web page where you can get string that is not still translated and translate it on native language. There will be small screenshot where this string is used and text. You will be able to type the translated text.

Vector displacement

Now I am making support of export/import of vector displacement. What is vector displacement? You have subdivided mesh and texture for displacement. It is not grey, every channel represents shift in space in corresponding direction (XYZ). Vector displacement is important for sculpting because it allowd to displace sphere into something non-trivial like face. Using vector displacement will make export for render engines much mere easy and precise. There is two types of vector displacement

1) World space vector displacement - RGB in picture mean XYZ shift in space. It is most precise method, but it is not good for animation.

2) Tangent space (local space) displacement - RGB mean shift in TBN - space, N- normal, T,B - directions of U,V gradient. This kind of displacement is good for animation but less precise because tangent space calculation can be made using many methods, it even can be non - orthonormal.

I have almost done this stuff, but I have a problem with method of calculation of tangent space in LW or Modo. If someone knows how to do that in Modo/LW, please send me the info.

You can download and test this feature by the link

http://www.3d-coat.com/files/3d-Coat-209B3B-en.exe

I have created the new topic in forum

http://3dbrush.kriska.hvosting.net/forum/index.php?showtopic=1038

Please help in testing vector displacement.

Also, if you have examples of EXR files with vector displacement to transform sphere of some other simple surface into something non-trivial, please send me to support. It will be great help.

Saturday, May 3, 2008

2.09 is coming soon!

3D-Coat 2.09 is almost done. There will be many new features. It will be essentially useful for LW users. The approximalte list of upcoming features:

1) Merging new objects is possible now! You can add new sub objects like eyes on your WIP.
2) Different uv-sets are placed on different textures, it allows you to use display memory more efficiently and get better quality.
3) You can choose resolution of every uv-set during import and change it any time. Also, you can change resolution of mesh separately for every uv-set.

ChangeResolution


4) Now you can group several materials (surfaces) into single uv-set

UVSetsManager


5) Select and move now supports symmetry.
6) Gradient select in sculpt mode works better with symmetry and works much better now.
7) Image picker has got navigation controls to scale/move/fit image


8) Wacom pen has got better support: opacity jitter is add for pen and every jitter can depend on pressure if you want.

PressureDependence


9) All textures (color/normals/specular) and all uv-sets could be viewed in single window
10) New option in fill tool using gradient - filling with opacity fading

GradientFillingTypes


11) ... and filling with spherical gradient

SphericalGradientFilling


12) New menu item - View->Browse to understand the structure of 3DC folders better

Browse


13) Move along motion in pen settings now works with symmetry
14) Stability improvements

15) It is possible to tweak uv-set in View texture mode. You can do it using RMB in wireframe mode.
16) Now you can edit not only in 3D, but in UV-plane! It is really complex change. Almost all tools support work in 2D and 3D. Just open View->View color texture and see how it works.
17) You can make seamless plane texturing in uv-plane! 3D-Coat now can be used very easily to tile textures and make relief. Just import plane and come to View->View color texture.
18) Hide/unhide/Fill can be applied to texture island (cluster)
19) Additional view mode for texture in UV - layout: shaded model

20) texture editor/viewer is in different movable/resizable window
21) shift - constrains for horisontal/verlical/diaginal movements of the pen. Click on surface and then press SHIFT
23) grids and snap to grid work in 2D - mode also
24) more correct export of texture with multiple uv-sets
25) new nice preview of pens and smart hints
26) it is possible to edit/export/import pens as 16 bit tiffs with 7 cannels - RGBA, Depth, Specular, Erase mask
27) small icons over materials to indicate what layers is in material (depth/color/specular)
28) 2D/3D grid are now in View menu

29) Smudge/collapse/expand tool in paint mode

I hope it will be most powerful update.

Welcome to beta-testing forum at

http://3dbrush.kriska.hvosting.net/forum/index.php?showforum=16

Friday, April 4, 2008

Some news.

1) 3D-Coat 2.08 is out. The list of features is there .
2) First newsletters was sent to customers.
3) I am seriously thinking about porting to Mac. It is not easy task, but I am seekeng for solution.
3) Now I am working over merging additional objects into scene (I hope to finist in 3-4 days). It opens a great perspective - adding new geometry in scene. Lofted tubes made with splines, boolean combining. The last thing - not so quick.
4) One of goals - improvement of materials - painting using photo. I want to make possibility to distort image using grid. It will allow to fit image on object very precisely.
5) I like Wink, I have already made several tutorials
www.3d-coat.com/files/Tut1/Interface.htm - Interface basics
www.3d-coat.com/files/Tut2/Curves.htm (30 mb) - Big tutorial about curves
http://www.3d-coat.com/files/Tut3/Ornament.htm - using patterns and curves
http://www.3d-coat.com/files/Tut6/HardCurve.htm - hard edges with curves
http://www.3d-coat.com/files/Tut4/DefineKey.htm - how to define hotkey
http://www.3d-coat.com/files/Tut4/PaintCavity.htm - cavity painting

Wednesday, March 26, 2008

The brief news, for someone it are not news :)

1) 3D - Brush has become 3D - Coat to avoid any problems in trademark registering. Thank to Mikael Strom for new logo! There was soooo long discussion and big battle over new name.
2) new web site is open. (http://www.3d-coat.com/)
3) 2.07 is out. Look the features there.
4) 2.08 is almost done. Visit forum to see the progress.
5) Almost all downloads are now form USA-based server, site is now distributed on 2 servers.

What is in process now?

1) Interface is becoming fully customable. I like idea of Wings 3D where hotkeys for all actions are defined using "Ins". I use "End" for the same purpose because "Ins" is by default bind to fill layer.
2) UV-set could be exported/imported
3) LW compartability improved - now you can use models with multiple uv-sets (but no more then one uv-set per face)
4) One long-playing bug is fixed - spikes on the edge between long and short polygones.
5) Curves have got important improvement - now you can put any picture along spline. You can see it there .
6) I have found the coolest program called Wink to make tutorials (thank to digman). Can't wait to make some flesh/video-tutorials.
7) We paln to spent some money on advertising since 1-st of april, I hope it will help to distribute 3DC. Till now we have spent only 5$ on advertising. Have great idea on advert? Write me.
8) Japanese website and transtlation is coming very soon.
9)2.08 hints will be fully translated in russian.
10) We plan to add some trial period to demo (maybe 6-12 hours of work time). After trial it will work like demo.
11) The price will grow significantly from 1-st of April. It will be 120$. Educational version will be available for 89$ (no commercial usage, layers amount limitation).

Wednesday, February 13, 2008

Recently 2.05 and 2.06was done. There are so m any features in pictures that it is better to give a links to the complete description:
2.05 features
http://3dbrush.kriska.hvosting.net/forum/index.php?showtopic=760
2.06 features
http://3dbrush.kriska.hvosting.net/forum/index.php?showtopic=801&st=0

Now I plan to add new import option - smooth uv-set like it is described there:

http://3dbrush.kriska.hvosting.net/forum/index.php?showtopic=802

Also, it may be interesting for you, I plan to add the next set of features in future:

- merging new objects into scene
- retopologisation
- more complete uv-mapping
- memory consumption optimisation, so that every face on layer will contaion only required subset of information (color or geometry)
- procedural layers (text layers, curve layers, parametrical materials layers etc)- make blending options like in PS (with same names)
- plugins system
- more filters (now you have 3 filters - adjust HSV, smooth, sharpen)
- tweaking in low-poly mode
- hairs and fur (maybe in 3.xx version)
- volumetrical sculpting (in 3.xx version) - work wth volume, not surface, so that you will be able to make holes or change topology as you wish.

It is a big piece of work, so please don't wait all this in 2.07 :).