What if... viewports were terminals


what if … grasshopper and script editors could be docked with the viewports


For that you should make a video/render and a new topic :wink:

1 Like

didn’t realize this was a serious topic – in which case, what exactly are you showing there

Oh, not a serious topic, more like a fun topic. This is just all the viewports rendered in ASCII art style.


Docking for the win … this is how I work these days


ascii_art.gh (98.5 KB)


                         ;+i::^^^:_ .                                                                           
                    -<>!I:::,:;!i~]1      .                                                                     
                   0n/{]_<>>i><__?{|      n"^                                                                   
                    qCxt)[?___-][}(/      v-:^,                                                                 
                     kUnt)}]]][{1|fr      x[>,"">                                                               
                     .0cj|1}}}1(|txx      t}+I,,,l]                                                             
                      wcr\){{1(\trvc     `\[_!;:::l]                                                            
                      ncr\)11)\tjvc      n([_>l;;IIi-                                                           
                      ?cj\))(\fxvYz     ~t{]_<illll!<?                                                          
                      ?uf|)(\fnzJQ      f(}]-~<iii>i<_1                                                         
                      Lr\))\fnYQ0      x|{[]-_+~<~~~~+[+                                                        
          .           ct|)\jvUmw     .c({}[[[[[[]]]]?][\                                                        
         ~:,",,",:;!_'j|)|jzLww     .x)}[[}{)|\tfjjjrjju.                                                       
        ;"""^^^^````^'\)(rXOdm      |{}[}{)\txvXC0mb#&&                                                         
       1__+~<>i!l;:,"^;(rLdj-    .<)[}{)\fncYQZp*%$h .'i!~                                                      
       JzXXYXXcvxf\{?~iI:"""^"!'.)}}1\fvYLmda&$% .."~<>>i>i                                                     
       .#WWWWWWM##**bOzf1~i;:,""[{|jzLmk#%$$"   ]]_-+~>iiii~                                       ."           
       .               aa0u1+i;:rLp#%B8'  .{1[[]?--_++<>iii!! .                                 {!"])           
                          ^hUr?>lI;lc.   [[]--_~<<~~+~<>ilI;:,!                              1>;l_Y.            
                             QOj[>i!i+   1|/rzc/_!II!i>i!I;,"^^^":li<l;,",-               (~lI![Xo.             
                               fq\_<><?   <h ?)(vj~,"":;I;:,^^``'''''`^:jU^            j~l;I>1J#'               
                                 nJ)_~_,   ;L {}{uac1i^``^^^`''``^"-hpwW .         r]llII!-vb#                  
                                  .bf]-{   ix `}?>Y|&o*&$     ^ \&WqOj.       .|[!l;;Il+/pa#.                   
                                    "X)1; vfv    :]&/}b  %hkdL)`^^"a|^'^I>~ii;;;;Il>?fq*#'                      
                                      0f[ l)]r          1<!I:,"^^```^-"bC\]+~<~~-)nq*W%                         
                                       z  >,;i<?M)'  . n[_<ilI;:,""^""^I[mYxt/fzOaW@                            
                                       .   'k`:Ii<~-}]/u/1]-~>ilI;:,,:::I&kLYCqh#''                             
                                                      . d;,>!&#hJ<^^iffjxvC                                     
                                                             *)t&8 *#8a#`                                       
                '    . .        .                                                                               
        ?$$**#&$$$  .@@        @@                                                                               
        ?$@    .%$i .@$hB$%$   $$  ;@$&$%@%   .@$@$$Y    xuxxur   nxrxu[ ..xrnuu. {xrxxn' .'xxxxcv '            
        ?@$@@@$BU   .@%  'BB)  $$  l$B  .@@] &$$  'I@$ .nn  ._ . xx' .;xr..nx..  ux..  xx! nun].                
        ?@B   $$$   .@$   $$t  $$  l$@   $${ $$B    @@ ^xx.      xu<II;I> .nx   .xx    xx/   !nuvx\'            
        ?$@    \@$- .@@   $@t  $$  l$$   @${  @B@@$B$1 .jnxunrv. _un{1nx `.nx    ]ruxcnnx .xun,lnx}

@nathanletwory Basically each ascii is somehow sorted based on its number of pixels (darkness) and used in place of an average illumination in each 8x8 square of viewport ?

Basically like that yes.

nice! Are custom view modes something mere mortals can experiment with or do you have to be a mcneel employee? :wink: I would love to use a 3d stippling viewport for illustrations:


That would help with patent drawings. Would be nice to control density and size of stipples.

1 Like

You could do this with GhGL

This one is available at


It must be purely white with purely black dots (no grays in between) … and no banding.

Here is an example of a design patent.


Sure, I just implemented basic ordered dithering as discussed in this article

The dithering you want is much more complex

I wonder if this could be useful here

1 Like

Sure, but being “kinda” close is the same as nothing for the USPTO.
It either fits the criteria or doesn’t :slight_smile:

The stipple dots must be distinct and they cannot touch each other or form black clumps.
(Enlarge to 100% to prevent screen moire)

Stipple.pdf (290.9 KB)

1 Like

Hmm, it’s must be simple enough because photoshop had this for decades (since the 90s). As an afterthought part of its bitmap algorithm.

-You need to make sure the darkest black is not less than 170
-You need to convert a greyscale image to 1-bit color using Error-Diffusion → (Stucki method), Non-weighted

Stucki has a little better dot distribution than Floyd-Steinberg in my past experience.

The algorithm isn’t terribly hard to write, but it is difficult to do on the GPU while drawing triangles. This is what I was trying to refer to when I meant that your dithering is more complex.

This would need to be done on a bitmap extracted from the GPU and processed during a frame. We don’t have that type of capability in GhGL, but it would be fun to write.


I think it’s time for the PTO to update it’s frikin printers. Even the Chinese PTO accepts grayscale computer models for printing.

1 Like

I’ve always been interested in non-photorealistic effects so this type of stuff looks nice to me.

1 Like