Coder Social home page Coder Social logo

retopoflow's Introduction

RetopoFlow

RetopoFlow is a suite of fun, sketch-based retopology tools for Blender from Orange Turbine that generate geometry which snap to your high poly objects as you draw on the surface.

This documentation covers the installation and usage of all tools included in the add-on.

You can read about the features and purchase a copy on our website or the Blender Market.

Blender Market

If you’re brand new to RetopoFlow, check the Quick Start page. Otherwise, jump right over to the Table of Contents.

Requirements

Below is a table showing which versions of RetopoFlow and Blender are compatible.

RetopoFlow Blender
3.4.0 3.6 or later
3.3.0 2.93--3.5
3.2.4 2.8x--2.9x
2.0.3 2.79 or before

All versions of RetopoFlow will work on any operating system the Blender supports.

Downloading

Future updates to RetopoFlow are funded by Blender Market purchases, and we provide top priority support through the Blender Market. However, we also made RetopoFlow accessible on RetopoFlow's GitHub Page, especially for students, teachers, and those using RetopoFlow for educational purposes.

You may download RetopoFlow from your account dashboard on the Blender Market once you have already purchased it or from RetopoFlow's GitHub Releases Page. For the more techie crowd, you can also symlink a clone of the GitHub repo to your add-ons folder.

Important: Blender has issues with the zip files that GitHub automatically packages with the green Code button on the main GitHub page. Do not use the zip files created by GitHub. Instead, use the officially packaged versions that we provide through the Blender Market or the GitHub Releases Page.

The code for RetopoFlow is open source under the GPL 3.0 license. The non-code assets in this repository are not.

Installing

The easiest way to install RetopoFlow is to do so directly within Blender. You can do this by going to Edit > Preferences > Add-ons > Install. This will open a File Browser in Blender, allowing to you navigate to and select the zip file you downloaded. Press Install from file.

If your browser auto-extracted the downloaded zip file, then you will need to re-compress the RetopoFlow folder before installing, or use Save As to save the zip file without extracting the contents.

Once installed, Blender should automatically filter the list of add-ons to show only RetopoFlow. You can then enable the add-on by clicking the checkbox next to 3D View: RetopoFlow.

Installing RetopoFlow

If you have any issues with installing, please try the following steps:

  1. Download the latest version of RetopoFlow for your version of Blender (see Requirements section above).
  2. Open Blender
  3. Head to Edit > Preferences > Add-ons and search for RetopoFlow
  4. Expand by clicking the triangle, and then press Remove
  5. Close Blender to completely clear out the previous version
  6. Open Blender and head to preferences again
  7. Click Install
  8. Navigate to your RetopoFlow zip file (please do not unzip)
  9. Click Install Add-on
  10. Enable RetopoFlow

Updating

RetopoFlow 3 comes with a built-in updater. Once you've installed it the first time, simply check for updates using the RetopoFlow menu. If you need to update the add-on manually for any reason, please be sure to uninstall the old version and restart Blender before installing the new version.

The RetopoFlow updater will keep all of your previous settings intact. If you need to update manually for whatever reason, you can also keep your preferences by copying the RetopoFlow_keymaps.json and RetopoFlow_options.json files from the previous version's folder before installation and pasting them into the new version's folder after installation.

See the Updater page for more details.

Getting Support

Here are ways to get help with a problem or a question that the documentation isn't answering:

Please provide as much information and detail as possible, such as steps to reproduce the issue, what behavior you expected to see vs what you actually saw, screenshots, and so on. See Debugging for details on getting as much useful information as possible. Also, if possible, please consider sending us the .blend file.

Contributing

Pull requests are welcome! If you'd like to contribute to the project then simply fork the repo, work on your changes, and then submit a pull request. We are quite strict on what we allow in, but all suggestions are welcome. If you're unsure what to contribute, then look at the open issues for the current to-dos.

retopoflow's People

Contributors

3desprit avatar bblanimation avatar carter2422 avatar cobryan05 avatar dependabot[bot] avatar jacqueslucke avatar kant avatar mattheimlich avatar mutableloss avatar patmo141 avatar theduckcow avatar vxlcoder 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

retopoflow's Issues

GVert is left-handed!

this mistake was made early on in dev (much of the framework uses this) and needs to get fixed.

Polystrips on thin areas often flip to the wrong side

We've talked about this one before, and so far as I know there's no good solution at the moment but it's something we should kind in mind to investigate.

On thin models there's often a problem with polystrips flipping to the opposite side of the mesh from that which it's drawn on. This can be really troublesome for certain models.

Should not be able to scale inner gverts

Current you can scale a selected inner gvert. This is unnecessary and should not be allowed, so as to prevent confusion with the user.
screen shot 2015-01-02 at 11 04 22 am

If an inner gvert is selected let's not allow the scale operator to be activated.

Keymaps should be created as a Modal Keymap

The hard-coded keymaps are really troublesome right now, particularly for selection. They aren't flexible and are easily missed if we forget to update the header.

According to @ideasman42, it should be possible to define an actual modal keymap in Python, like this:
screen shot 2015-01-03 at 8 22 13 pm

UI checkbox to turn off pressure

Need to add the ability for users to turn off pressure sensitivity. It's not always useful and some users will want to use a tablet but not use pressure.

Optimize Polystrips for speed

Polystrips can quickly become quite slow, particularly on slower machines and complex models.

If there's anything we can do to optimize it then we should πŸ˜„

Speed is probably one of the more common points of critical feedback I've heard.

Unify selection sets

Currently selection is split across gverts, gedges, and gpatches. Per discussion, we've decided to unify this such that all elements belong to the same selection set.

Contours is broken: sequence size is 2, expected 3

Traceback (most recent call last):
  File "/Users/jonathanwilliamson/Dropbox (Personal)/blenderDev/addons/cgCookie/scripts/addons/retopoFlow/__init__.py", line 1310, in modal
    self.hover_loop_mode(context, settings, event)
  File "/Users/jonathanwilliamson/Dropbox (Personal)/blenderDev/addons/cgCookie/scripts/addons/retopoFlow/__init__.py", line 893, in hover_loop_mode
    h_target = c_cut.active_element(context,event.mouse_region_x,event.mouse_region_y)
  File "/Users/jonathanwilliamson/Dropbox (Personal)/blenderDev/addons/cgCookie/scripts/addons/retopoFlow/contour_classes.py", line 2459, in active_element
    intersect = intersect_point_line(mouse_loc, a, b)
ValueError: intersect_point_line: sequence size is 2, expected 3

Re-work widget theme and options

The Contours widget needs to be re-designed and re-themed. The new design has been done by Pawel L. but the functionality is waiting on the new Wiggly Widgets work by Antony R in Blender master.

Replace old settings calls with new function in common_utilities

Contours used an older method of setting the add-on preferences. We now have a common utility that makes it much simpler.

All calls for:

settings = context.user_preferences.addons[AL.FolderName].preferences

Should be replaced with:

settings = common_utilities.get_settings()

Tweak: adjusting segments in gedge adjacent to tweaked patch makes everything disappear momentarily

If you tweak a patch and then try and adjust the segments of an adjacent gedge it breaks. Everything but the tweaked patch disappears.

Console output:

Traceback (most recent call last):
  File "/Users/jonathanwilliamson/Dropbox (Personal)/blenderDev/addons/cgCookie/scripts/addons/retopoFlow/__init__.py", line 2214, in draw_callback
    return self.ui.draw_callback(context)
  File "/Users/jonathanwilliamson/Dropbox (Personal)/blenderDev/addons/cgCookie/scripts/addons/retopoFlow/__init__.py", line 2505, in draw_callback
    self.draw_callback_themed(context)
  File "/Users/jonathanwilliamson/Dropbox (Personal)/blenderDev/addons/cgCookie/scripts/addons/retopoFlow/__init__.py", line 2550, in draw_callback_themed
    for (p0,p1,p2,p3) in gpatch.iter_segments(only_visible=True):
  File "/Users/jonathanwilliamson/Dropbox (Personal)/blenderDev/addons/cgCookie/scripts/addons/retopoFlow/polystrips.py", line 1296, in iter_segments
    if not all(self.visible[idx] for idx in lidxs):
  File "/Users/jonathanwilliamson/Dropbox (Personal)/blenderDev/addons/cgCookie/scripts/addons/retopoFlow/polystrips.py", line 1296, in <genexpr>
    if not all(self.visible[idx] for idx in lidxs):
KeyError: (11, 1)```

![screen shot 2015-01-03 at 10 28 39 pm](https://cloud.githubusercontent.com/assets/1648631/5604776/f6086094-9397-11e4-92e6-fb3b9bb5724c.png)
![screen shot 2015-01-03 at 10 29 26 pm](https://cloud.githubusercontent.com/assets/1648631/5604777/fd6338aa-9397-11e4-8952-9c873d9e1fac.png)

Note: the behavior is slightly different when increasing/decreasing segments.

Polystrips fails on start if "BezierCurve" object exists

If a bezier curve object with name "BezierCurve" is present in scene upon starting Polystrips then it fails.

Traceback (most recent call last):
  File "/Users/jonathanwilliamson/Dropbox (Personal)/blenderDev/addons/cgCookie/scripts/addons/retopoFlow/__init__.py", line 2200, in invoke
    self.ui = PolystripsUI(context, event)
  File "/Users/jonathanwilliamson/Dropbox (Personal)/blenderDev/addons/cgCookie/scripts/addons/retopoFlow/__init__.py", line 2348, in __init__
    self.create_polystrips_from_bezier(bpy.data.objects['BezierCurve'])
  File "/Users/jonathanwilliamson/Dropbox (Personal)/blenderDev/addons/cgCookie/scripts/addons/retopoFlow/__init__.py", line 3678, in create_polystrips_from_bezier
    gv0 = pregv if pregv else self.create_gvert(mx, bp0.co, 0.2)
AttributeError: 'PolystripsUI' object has no attribute 'create_gvert'

Cannot delete strip when part of patch

If a strip is part of a patch then it crashes upon trying to delete the selected edge.

Traceback (most recent call last):
  File "/Users/jonathanwilliamson/Dropbox (Personal)/blenderDev/addons/cgCookie/scripts/addons/retopoFlow/__init__.py", line 2213, in modal
    ret = self.ui.modal(context, event)
  File "/Users/jonathanwilliamson/Dropbox (Personal)/blenderDev/addons/cgCookie/scripts/addons/retopoFlow/__init__.py", line 3791, in modal
    nmode = FSM[self.mode](eventd)
  File "/Users/jonathanwilliamson/Dropbox (Personal)/blenderDev/addons/cgCookie/scripts/addons/retopoFlow/__init__.py", line 3388, in modal_main
    self.polystrips.disconnect_gedge(self.act_gedge)
  File "/Users/jonathanwilliamson/Dropbox (Personal)/blenderDev/addons/cgCookie/scripts/addons/retopoFlow/polystrips.py", line 1191, in disconnect_gedge
    gedge.disconnect()
  File "/Users/jonathanwilliamson/Dropbox (Personal)/blenderDev/addons/cgCookie/scripts/addons/retopoFlow/polystrips.py", line 601, in disconnect
    self.gvert0.disconnect_gedge(self)
  File "/Users/jonathanwilliamson/Dropbox (Personal)/blenderDev/addons/cgCookie/scripts/addons/retopoFlow/polystrips.py", line 135, in disconnect_gedge
    self.update_gedges()
  File "/Users/jonathanwilliamson/Dropbox (Personal)/blenderDev/addons/cgCookie/scripts/addons/retopoFlow/polystrips.py", line 191, in update_gedges
    self.update()
  File "/Users/jonathanwilliamson/Dropbox (Personal)/blenderDev/addons/cgCookie/scripts/addons/retopoFlow/polystrips.py", line 256, in update
    if gedge: gedge.update()
  File "/Users/jonathanwilliamson/Dropbox (Personal)/blenderDev/addons/cgCookie/scripts/addons/retopoFlow/polystrips.py", line 938, in update
    gpatch.update();
  File "/Users/jonathanwilliamson/Dropbox (Personal)/blenderDev/addons/cgCookie/scripts/addons/retopoFlow/polystrips.py", line 1121, in update
    lc0 = list(self.ge0.iter_segments())
  File "/Users/jonathanwilliamson/Dropbox (Personal)/blenderDev/addons/cgCookie/scripts/addons/retopoFlow/polystrips.py", line 984, in iter_segments
    cur0,cur1 = gv0.get_corners_of(self)
  File "/Users/jonathanwilliamson/Dropbox (Personal)/blenderDev/addons/cgCookie/scripts/addons/retopoFlow/polystrips.py", line 356, in get_corners_of
    assert False, "GEdge is not connected"
AssertionError: GEdge is not connected

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.