dreaming of a texture...

a vector texture node…

…that can load SVG (and why not other 2D vector data)

…that can repeat the texture along y and/or x axis (sort of like noise size)

…that can vary the size and/or rotation of each repeated ‘texture copy’, randomly and/or in linear/exponential/sine/square-wave fashion, why not have x/y translation too

…which can skip repetitions randomly or in linear fashion, and can set the distance between each ‘repeated texture’

…that has simple interface with activation button and sliders for each property

Why? (Cases)

Imagine you have a picture of a crater, and a model of a moon. Displaying monotonic rows of identical craters wouldnt be very credible.

However, once you vary the size, rotation around z axis and location of crater-textures on the model-moon surface, you get very credible moon surface.

You could use rows of wrinkle-vectors nor-mapped on skin, each rotated and translated (randomly) to quickly reproduce skin wrinkles.

Or wou might want to show nails holding up an old wooden wall, this time lined up in pairs in two rows, each nail slightly differently rotated and with tiny jitter on x&y location to simulate a real sloppy carpenters handiwork

Maybe just the straight rows of vent holes on a building wall, staggered rows of vent inlet vectors

What do you think? Someone I talked this over with said that it may not be easy to map 2D vector gfx on 3D surf?
codename: vexturizer-draft :wink:

ROADMAP

    1. SVG texture import (convert into bitmap or whatever?)
    1. Implement repeat XY, Clipping minXY/maxXY, Clip/Repeat/Checker, simple texture features
    1. Minimal Vector Texture Engine
      Guide - infinite line going through the centerpoint of texture plane
      ------ properties: rotation
      ------ Multiple guides possible!

Atoms - user defined SVG graphic
------ properties:XYZ offset, XYZ rotation, XYZ scaling
------ Also preset SVG primitives (line/circle/square/triangle/suzanne)

Duplication of Atoms along the Guide
----- Main function!
----- Distributed by Atom width or by Guide resolution

— UI - nice easy to use texture node ui with sliders and numbers + preview
— Blender add-on or a plugin

    1. Vector Texture Engine
      — Property-modulator: modulate Atoms properties
      — Modulator functions for XYZ trans/rot/scaling:
      ------ static value (+/-)
      ------ linear modulation (multiplier)
      ------ cyclic modulation (sin/sqr/tri/saw/random modulation)
      ------ easing modulation (exponential/quadratic/circular easing)
      ------ Values can be rounded to integer (ie. sine wave becomes square wave with values -1, 0, +1)

— Native blender texture type

    1. Advanced Vector Texture Engine features
      — Modulator stack where different modulators can be chained (many modulators can be combined)
      — Modulator input and output offset/min/max/multipliers
      — UI - modulator stack, add modulator curve preview (2d/3d)

Description:
This texture generator will duplicate SVG graphic object-atoms along a infinite vector guide going through the centerpoint of the texture plane (canvas).

To create an interesting an interesting texture, user can rotate the guide, and translate, rotate and scale each of the atoms, either by static value, or linearly or cyclically against time or xy coords.

User can then duplicate guides and apply trans/rot/scale to each of these duplicates.

Each of the properties mentioned before could be also attached to a ‘modulator’ that could modulate the properties along time or xy-coords. For example, sine wave function multiplier could be applied to the y-trans of each atom, translating the rows or atoms to reseble ripple-profile.

For example, make a floor tile texture by duplicating a square tile graphic along a guide running along the y axis, and then duplicating the guides along the x-axis.[end]

I think a vector based texture loader would be pretty much useless because all textures have to be converted to raster bitmaps at one stage or another before rendering, so the artist might as well do it by themselves.

Varying size/loc/rot for the repeated maps is actually a good idea, but will only work on certain textures where there is a ‘blank’ region around as borders(alpha crater textures would work). Otherwise, imagine tiling a wooden floor texture with random rot/loc/scale, the result would be disasterous.

Thanks for your criticism, xiaxuele, however misplaced it was…

I think a vector based texture loader would be pretty much useless because all textures have to be converted to raster bitmaps at one stage or another before rendering, so the artist might as well do it by themselves.

You might as well argue that 3D or 3D meshes are useless because “they have to be converted to raster bitmaps”, so we all might as well do all our work in raster? lol

YOU dont use it so it must be useless? Oh man…

In fact Blenders procedural texture nodes already can do everything I propose (dream of) - for voronoi/perlin noise etc. Only Blender cannot do it for a image texture, and much less for a vector image.

Your reply shows, in my opinion, that you dont do much vector 2D work, SVG or similar. Try it. Its a very unique way of creating strong striking graphics.

Benefits of vectors:

  • Vector curves provide beatiful clean lines at any resolution (aa).
  • Vectors save time, memory/hd space/bandwidth (can you say flash?).
  • Vector graphics can be scaled infinitely without any loss of visual quality.
  • Produce very accurate detail for certain types of patterns.

Vectors also offer great possibilities for procedural texturing, which is what this thread is about.

Varying size/loc/rot for the repeated maps is actually a good idea, but will only work on certain textures where there is a ‘blank’ region around as borders(alpha crater textures would work).

I really have no idea what you are talking about here? You seem to be stuck in a anti -mindset.

Of course you could stack/duplicate/render vectors all around the place to your hearts content, as you could pixels!! Whether it all tiles smoothly and seamlessly is another story, but wouldnt be relevant in all cases.

Otherwise, imagine tiling a wooden floor texture with random rot/loc/scale, the result would be disasterous.

We already have a functionality for tiling textures side-to-side in uniform clean lines and rows. Thats NOT what I am talking about. What if you WANT a disastrous effect?

Read the moon crater example again. Visualize a moon surface. Are all the craters of same size? Are the craters in straight rows? No and no.

And this is the one of the effects that I have been waiting for for years in a 3D proggy.

jesus christ you are annoying

Thanks, now please move along - or post on topic

NodeRanger:
Your comment have nothing to do with this topic, and your comment are Off Topic and rude and if you don’t have anything real to say, just let it be.

admin.

Why?
They certainly need to be rasterised on rendering, but do you think it’s harder to map geometry other than regular grids onto a polygon? The tranformation is exactly the same.

Vector textures means no blocking on high zoom levels and so no need for bluring to hide such, which means clean crisp edges.

Vector textures would be very good for texturing cartoon style graphics and for detailing artificial objects (think greebling on a spaceship) for this reason.

this would be really nice, mostly for the reasons mentioned already.

I think this is a FANTABULOUS idea… I once thought this would have been cool after watching a series of cartoons that mixed 2d with 3d, and doing this with a “vector graphic texture” will be easy as pie.

I first thought of reading the swf file specs, but after a confusing contact with the people of macromedia I decided to drop the project. A couple of weeks ago I was browsing through the CVS, and I was going to download the source code of the image textute, to understand HOW textures work. The thing is… i don’t have time at the moment :(…

But I agree, a vector graphic texture for Blender will rock. I think the best bet would be some type of SVG to Blender Texture PLUGIN. It will be even better
if we can extract the animation data of the SVG (yes, SVG supports animation).

This isn’t a bad, only real problem I see is that Vector graphics have nowhere near realistic qualities to them. They’re too busy being resolution independant. For cartoon makers this wouldn’t matter too much I guess, but for this looking for realism, it would do nothing.

this makes me laugh everytime. :smiley:

I think what you’re suggesting is very possible; I think it would be best to seperate vector/random positioning into two seperate nodes though. On the vector front, you would need a file parser for the vector format, and this node would convert it into a bitmap depending on the scale fed to it. The positioning node (could this be python?) would be quite useful with other textures as well. I’m not sure what the math would have to be on the positioning node, as I’m not very familiar with the node system, but I assume (by the existance of a vector mapping node) that it would be possible?

Vector textures would be very good for texturing cartoon style graphics and for detailing artificial objects

this would be really nice

I think this is a FANTABULOUS idea…

Glad to see you agree :slight_smile: You guys must be artists! hehe running in the same problems with certain type of details and materials…

MartyJ:

This isn’t a bad, only real problem I see is that Vector graphics have nowhere near realistic qualities to them. They’re too busy being resolution independant. For cartoon makers this wouldn’t matter too much I guess, but for this looking for realism, it would do nothing.

In fact, vector art can be exactly as naturalistic or realistic as bitmap art. Make no mistake about that.

Ultimately there is no ‘realistic’ or ‘naturalistic’ in real life - since these are just terms in cultures, the meaning or the “look” of realistic varies from time to time, culture to culture, and person to person.

But I already mentioned that vectors could be used for skin surface vein bump and for texturing a moon in a semi-random fashion.

How about all the patterns on clothes of your models or the fabric textures themselves? Seamless of course. In fact the texture node could use basic shapes as well as loadable images for producing the patterns, just for all those tile patterns and wooden floor strip patterns. Or how about vent grilles with round holes…

Ooh I so wanna get this kind of properly programmed material texture node in blenda!

I dabble with programming, ruby, but I have only managed to produce very simple patterns made by repeating and scaling basic geometric shapes along their centerpoint. On my own it would take me maybe 5 years to finish a simple 2D gfx generator like this…

I was hoping we could form a team of some kind and maybe someone more experienced with blender, python and plugin / texture programming would join in.

So far its in the ‘dream’ phase, keep those ideas coming

Decided that it would be great to make it ‘genetic’ in the sense that a simple sequence of characters could be used to describe very complex textures (from geom. primitives though). Perhaps even ‘crossing’ textures would be possible.

I am working on feature list, and a rough flow for the texture generation, pseudocode style.

Any coders/artists interested in generative graphics please join in

If no-one joins in in a timeframe of couple of weeks I guess I will make it ruby-svg standalone, but it would be much cooler to have it in Blend.a…

What do you need? :smiley:

I also think that SVG textures support is a great idea.

Thanks for your support. It seems to me that about 1/3 of the people I talk with think they would use such vector texture node. Lets go make it real!

Fred Pyo:

What do you need?

If possible, ultimately a new blender texture type. Perhaps, at first, we move in cautious fashion, and make it a plugin

codename: vexturizer-draft :wink:

ROADMAP

    1. SVG texture import (convert into bitmap or whatever?)
    1. Implement repeat XY, Clipping minXY/maxXY, Clip/Repeat/Checker, simple texture features
    1. Minimal Vector Texture Engine
      Guide - infinite line going through the centerpoint of texture plane
      ------ properties: rotation
      ------ Multiple guides possible!

Atoms - user defined SVG graphic
------ properties:XYZ offset, XYZ rotation, XYZ scaling
------ Also preset SVG primitives (line/circle/square/triangle/suzanne)

Duplication of Atoms along the Guide
----- Main function!
----- Distributed by Atom width or by Guide resolution

— UI - nice easy to use texture node ui with sliders and numbers + preview
— Blender add-on or a plugin

    1. Vector Texture Engine
      — Property-modulator: modulate Atoms properties
      — Modulator functions for XYZ trans/rot/scaling:
      ------ static value (+/-)
      ------ linear modulation (multiplier)
      ------ cyclic modulation (sin/sqr/tri/saw/random modulation)
      ------ easing modulation (exponential/quadratic/circular easing)
      ------ Values can be rounded to integer (ie. sine wave becomes square wave with values -1, 0, +1)

— Native blender texture type

    1. Advanced Vector Texture Engine features
      — Modulator stack where different modulators can be chained (many modulators can be combined)
      — Modulator input and output offset/min/max/multipliers
      — UI - modulator stack, add modulator curve preview (2d/3d)
      — Genetic features - unique keys for texture settings, crossing 2 textures, selection from successive generation
      — Recursive textures: Atoms SVG objects used as guides, recursively (!!)

Description:
This texture generator will duplicate SVG graphic object-atoms along a infinite vector guide going through the centerpoint of the texture plane (canvas).

To create an interesting an interesting texture, user can rotate the guide, and translate, rotate and scale each of the atoms, either by static value, or linearly or cyclically against time or xy coords.

User can then duplicate guides and apply trans/rot/scale to each of these duplicates.

Each of the properties mentioned before could be also attached to a ‘modulator’ that could modulate the properties along time or xy-coords. For example, sine wave function multiplier could be applied to the y-trans of each atom, translating the rows of atoms to reseble ripple-profile.

For example, make a floor tile texture by duplicating a square tile graphic along a guide running along the y axis, and then duplicating the guides along the x-axis.

Tell me what you think? Yeah its not perfect and I didnt write down all the ideas.

C’mon people! If we get enough folks in on this, we will have a new texture type in Blender before christmas :wink:

Are you in my head? If so, please get out of there right now! It is not big enough for the both of us.

I have also been thinking in the exact lines as you have been! My though was to create a seperate program that could (conected to a suitable compiler) create blender texture plugins. It would work exactly as you said with different guides!

I think it might be possible to have the atoms be bitmaps to. Do this and you have an extremely competent system.

I could very much help with especially the genetic part. I have just finished a course in evolutionary algorithms during my masters program in Complex Adaptive Systems. Even though I have not worked with graphics in this context I am pretty sure I could conjure up a system for this.

It would take a more experienced coder than me to start this up in a competent way but I think I can pull my weight. How do you guys want to move on?

This paper looks interesting (it’s 1.5MB btw):

http://alice.loria.fr/publications/papers/2005/VTM/vtm.pdf

I wonder how easy it would be to write a Renderman shader to do that. It may need a custom DSO shadeop to load the vector image and rasterize it on the fly.

Haha I think something like this idea has been LONG awaiting in the brains of many CG people!

I think how we will proceed with this is that we work on the draft (please comment) and try to gather people for couple of weeks.

I have some UI scetches under construction to make function of this ‘vexturizer-draft’ easier to understand.

I think it might be possible to have the atoms be bitmaps to. Do this and you have an extremely competent system.

Ah yes! Thats a good idea, even if recursive bitmap textures wont be possible.

osxrules - Bullseye!! Many thanks for the link!!

OMG http://alice.loria.fr/publications/