Anim8or Community

Please login or register.

Login with username, password and session length
Advanced search  

News:

An update to Anim8or, v1.00b, is available with a few bug fixes. Get your copy HERE. See the "ReadMe" file for details.

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - Raxx

Pages: 1 ... 3 4 [5] 6 7 ... 89
61
Anim8or v0.98 Discussion Forum / Bug/Issue: Normals (ASL)
« on: March 07, 2016, 02:15:49 am »
I'm posting here since this seems like a bug to me. I'm working on a new set of scripts and part of it detects the sharpness/creases of edges in the geometry. I'm doing this by measuring the dot product of the normals of the two faces connected to an edge to get its sharpness (1 is flat, 0 is not).

To get the face normals, I'm calculating the mean of all the normals of the points in a face (ie (normal1 + normal2 + normal3)/3). I'm getting these normals using GetNormal(GetFaceNormalIndex()), rather than calculating the geometric normal manually. I'd rather not go through the hassle of triangulating and math-ing and combining for each face since it's more work, and more convoluted since I have to work with mesh data not tridata.

The issue is that I have a symmetrical mesh, and at a lot of locations a face on one side comes up with different normals than the corresponding face on the other side. I get why this can happen for n+3 sided faces, but it's also happening for triangles! And yet when I show normals in the Options->Debug menu, the triangles' normals look exactly symmetrical when the ASL version is not. This leads me to believe that there is some sort of lack of precision going on or something. My script needs precision!

So here I am reporting it. I hope it can be fixed if it's not an error on my part. Below and attached are examples that I hacked together to show what I mean.

ASL Snippet
  1. file $c;
  2. shape $s, $childShapes[0];
  3. int $i, $j, $k;
  4. float $numSides;
  5. point3 $faceNormal;
  6.  
  7. $c.open("$console", "w");
  8.  
  9. project.curObject.GetShapes($childShapes);
  10.  
  11. for $i = 0 to $childShapes.size - 1 do
  12. {
  13. if($childShapes[$i].GetKind() == SHAPE_KIND_MESH)
  14. {
  15. $s = $childShapes[$i];
  16.  
  17. for $j = 0 to $s.GetNumFaces() - 1 do
  18. {
  19. if ($s.GetFaceSelected($j) == 1)
  20. {
  21. $faceNormal = $s.GetNormal($s.GetFaceNormalIndex($j, 0));
  22. $numSides = $s.GetNumSides($j);
  23.  
  24. for $k = 1 to $numSides - 1 do
  25. {
  26. $faceNormal = $faceNormal + $s.GetNormal($s.GetFaceNormalIndex($j, $k));
  27. }
  28.  
  29. $faceNormal = normalize(($faceNormal.x/$numSides, $faceNormal.y/$numSides, $faceNormal.z/$numSides));
  30.  
  31. $c.print("\nFace %d has normals (%.3f, %.3f, %.3f)\n", $j, $faceNormal);
  32. }
  33. }
  34. }
  35. }
  36.  
  37. $c.close();
  38.  

The above script lets you select faces, so that when you run it it'll print in the console what the face normal is for each of the faces.

62
A bug I found: selected subdivision meshes no longer have bounding boxes when "Show Subdivision Edges" is unticked in Configure->GUI

63
Anim8or v0.98 Discussion Forum / Re: Feature Request Thread
« on: March 04, 2016, 06:11:06 pm »
This concept, or a very similar one, is called Instancing in OpenGL and D3D. At first glance it may seem simple, but there are a lot of nuances. If you allow editing of the per face properties in an instance (materials, texture coordinates, etc.), updating then when the geometry of the base shape changes is very complex. Vertex, edge, face, normal, tex-coord numbers often change throughout the mesh when just one small part is edited. This is the same, fundamental complexity with mirrored meshes.

What would be fairly easy to support: position, orientation, scale, materials (substituting different ones for the ones in the base model), and all global properties shown in the Properties editors such as subdivision level, parametric parameters, layer, smooth angle, etc.
As I described in the post above, clones shouldn't be editable meshes unless they're converted into their own independant shapes (and thus not being clones/instances anymore), so there wouldn't be any editing of materials (besides the base material), texture coords, or anything else p/e/f on these active instances. Thus this complexity is avoided. So yes, what you described as fairly easy to support is what I described, and therefore useful enough ;)

64
Anim8or v0.98 Discussion Forum / Re: Feature Request Thread
« on: March 04, 2016, 10:35:00 am »
I know that it's about time to focus on the other editors, but here's a feature for the object editor that I would find extremely useful, and I'm sure others would as well.

Clone Mesh
A clone is a duplicate of a mesh shape. It's basically just a copy. If the original gets edited, the copy updates to that version of the original immediately. A clone can be transformed (moved, scaled, rotated). A clone can have its own unique parameters (it copies the original's when the clone is first created, including the original's transform). For example, if it's a mesh, then the smooth angle can be customized. If it's a subdivision mesh, then the working/final divisions and smooth angle can be customized. And of course the layer. Also, clones can have unique materials assigned to them (only the base material--if specific faces have assigned materials, those remain the same as the original's). It's only the mesh structure that remains exactly the same as the original.

The mesh structure of a clone can't be edited. Therefore it'd be useful that if it's a subdivision mesh, that it doesn't show the control mesh whatsoever in any of the shading modes (unless give it an option in its dialog box?). However, a clone can be converted to mesh to "unclone" it.

There are a lot of uses for this. The user can make a clone of the mesh and scale it -1, creating a mirror and then be able to do mirrored modeling while being able to see the changes on the other side immediately without the control mesh getting in the way if it's a subdivision mesh. Things like eyeballs, mirrored accessories and clothing, etc., becomes easy to do. If an object needs lots of copies of a mesh, like for example a metal chain, these can all be cloned and then when editing the original chain link, all the other chain links become updated immediately as well. It also greatly reduces file sizes for things like this.

Copying and pasting a clone results in a clone with the same parameters as the copied clone. Deleting the original mesh deletes the clone (maybe autodetect if there are clones of that mesh, and then ask if the user wants to delete the clones or not. If not, then the clones get converted to meshes).

As for morph targets, I think it'd be interesting if it reflected the original's morphs as well when setting and animating, with an option in its dialog box to not copy it.

This isn't an original idea of mine. It's something I used a lot in XSI when I used it for modeling. I think it'd be somewhat easy (compared to the *ahem* mirrored modeling feature) to implement as well, since it's just running a copy method every time a cloned mesh is modified, and in figure/sequence/scene editors it can be treated like a transformed instance of the original mesh when building the list of geometry.

65
slex, undo buffer was already at 100mb

steve,

Code: [Select]
begin: InitInstance()
call:  AppInitRegistry()
       Checking for .an8 association.
       association found.
       AppInitRegistry() successful.
       creating dummy window.
       dummy window created.
begin: Draw3DOpenGL::ChoosePixelFormat(samples = 1).
end:   Draw3DOpenGL::ChoosePixelFormat() return value = 9.
begin: Draw3DOpenGL::CreateContext(pixelFormat = 9).
end:   Draw3DOpenGL::CreateContext() return value = 0x00010000.
begin: Draw3DOpenGL::ChoosePixelFormat(samples = 8).
end:   Draw3DOpenGL::ChoosePixelFormat() return value = 57.
       dummy window destroyed.
       creating main window.
       GPreserveWindowLocation = true.
       GIsMaximized = false.
       main window created.
       Anim8or = 0.98a (build 1222) 29-Feb-16.
       OS = Windows 8  (6.2) build 9200.
       CPU = x86 Intel Pentium 8 cores model 94 stepping 3.
       creating final OpenGL context.
       UsingDummyWindow = true.
begin: Draw3DOpenGL::CreateContext(pixelFormat = 57).
end:   Draw3DOpenGL::CreateContext() return value = 0x00020000.
       final OpenGL context created.
       creating floating window (top level).
       creating child windows.
       child windows created.
call:  MakeCurrent(hdc, glContext).
       MakeCurrent() successful.
call:  theOpenGL->Initialize().
       theOpenGL->Initialize() successful.
begin: Draw3DOpenGL::ReadExtensions()
       OpenGL vendor: NVIDIA Corporation
       OpenGL renderer: GeForce GTX 980M/PCIe/SSE2
       OpenGL version: 4.5.0 NVIDIA 359.06
       GL_MAX_TEXTURE_SIZE = 16384.
       OpenGL version = 4.5.
       GL_MAX_SAMPLES_EXT = 32.
       determining actual maxSamplesPerPixel.
begin: Draw3DOpenGL::ChoosePixelFormat(samples = 2).
end:   Draw3DOpenGL::ChoosePixelFormat() return value = 25.
begin: Draw3DOpenGL::ChoosePixelFormat(samples = 3).
end:   Draw3DOpenGL::ChoosePixelFormat() return value = 41.
begin: Draw3DOpenGL::ChoosePixelFormat(samples = 4).
end:   Draw3DOpenGL::ChoosePixelFormat() return value = 41.
begin: Draw3DOpenGL::ChoosePixelFormat(samples = 5).
end:   Draw3DOpenGL::ChoosePixelFormat() return value = 57.
begin: Draw3DOpenGL::ChoosePixelFormat(samples = 6).
end:   Draw3DOpenGL::ChoosePixelFormat() return value = 57.
begin: Draw3DOpenGL::ChoosePixelFormat(samples = 7).
end:   Draw3DOpenGL::ChoosePixelFormat() return value = 57.
begin: Draw3DOpenGL::ChoosePixelFormat(samples = 8).
end:   Draw3DOpenGL::ChoosePixelFormat() return value = 57.
begin: Draw3DOpenGL::ChoosePixelFormat(samples = 9).
end:   Draw3DOpenGL::ChoosePixelFormat() return value = 73.
begin: Draw3DOpenGL::ChoosePixelFormat(samples = 10).
end:   Draw3DOpenGL::ChoosePixelFormat() return value = 73.
begin: Draw3DOpenGL::ChoosePixelFormat(samples = 11).
end:   Draw3DOpenGL::ChoosePixelFormat() return value = 73.
begin: Draw3DOpenGL::ChoosePixelFormat(samples = 12).
end:   Draw3DOpenGL::ChoosePixelFormat() return value = 73.
begin: Draw3DOpenGL::ChoosePixelFormat(samples = 13).
end:   Draw3DOpenGL::ChoosePixelFormat() return value = 73.
begin: Draw3DOpenGL::ChoosePixelFormat(samples = 14).
end:   Draw3DOpenGL::ChoosePixelFormat() return value = 73.
begin: Draw3DOpenGL::ChoosePixelFormat(samples = 15).
end:   Draw3DOpenGL::ChoosePixelFormat() return value = 73.
begin: Draw3DOpenGL::ChoosePixelFormat(samples = 16).
end:   Draw3DOpenGL::ChoosePixelFormat() return value = 73.
begin: Draw3DOpenGL::ChoosePixelFormat(samples = 17).
end:   Draw3DOpenGL::ChoosePixelFormat() return value = -1.
begin: Draw3DOpenGL::ChoosePixelFormat(samples = 18).
end:   Draw3DOpenGL::ChoosePixelFormat() return value = -1.
begin: Draw3DOpenGL::ChoosePixelFormat(samples = 19).
end:   Draw3DOpenGL::ChoosePixelFormat() return value = -1.
begin: Draw3DOpenGL::ChoosePixelFormat(samples = 20).
end:   Draw3DOpenGL::ChoosePixelFormat() return value = -1.
begin: Draw3DOpenGL::ChoosePixelFormat(samples = 21).
end:   Draw3DOpenGL::ChoosePixelFormat() return value = -1.
begin: Draw3DOpenGL::ChoosePixelFormat(samples = 22).
end:   Draw3DOpenGL::ChoosePixelFormat() return value = -1.
begin: Draw3DOpenGL::ChoosePixelFormat(samples = 23).
end:   Draw3DOpenGL::ChoosePixelFormat() return value = -1.
begin: Draw3DOpenGL::ChoosePixelFormat(samples = 24).
end:   Draw3DOpenGL::ChoosePixelFormat() return value = -1.
begin: Draw3DOpenGL::ChoosePixelFormat(samples = 25).
end:   Draw3DOpenGL::ChoosePixelFormat() return value = -1.
begin: Draw3DOpenGL::ChoosePixelFormat(samples = 26).
end:   Draw3DOpenGL::ChoosePixelFormat() return value = -1.
begin: Draw3DOpenGL::ChoosePixelFormat(samples = 27).
end:   Draw3DOpenGL::ChoosePixelFormat() return value = -1.
begin: Draw3DOpenGL::ChoosePixelFormat(samples = 28).
end:   Draw3DOpenGL::ChoosePixelFormat() return value = -1.
begin: Draw3DOpenGL::ChoosePixelFormat(samples = 29).
end:   Draw3DOpenGL::ChoosePixelFormat() return value = -1.
begin: Draw3DOpenGL::ChoosePixelFormat(samples = 30).
end:   Draw3DOpenGL::ChoosePixelFormat() return value = -1.
begin: Draw3DOpenGL::ChoosePixelFormat(samples = 31).
end:   Draw3DOpenGL::ChoosePixelFormat() return value = -1.
begin: Draw3DOpenGL::ChoosePixelFormat(samples = 32).
end:   Draw3DOpenGL::ChoosePixelFormat() return value = -1.
       maxSamplesPerPixel = 16.
end:   Draw3DOpenGL::ReadExtensions()
call:  MakeCurrent(hdc, NULL).

66
I have a crashing issue when using two monitors. If loading Anim8or in the main monitor, everything's ok. If I load Anim8or into the main monitor and then move it into the secondary monitor before the splash screen goes away, it crashes. If I set it to save the window position and load directly into the secondary monitor, it crashes as soon as it opens. The only time it doesn't crash in the secondary monitor is when I load it in the main monitor and then after the splash screen finishes, I move it to the secondary monitor. Even then, it crashes when switching editors or just randomly.

Build 1222, Win10, OpenGL 4.5, nVidia GTX 980m.

67
Ongoing Anim8or Development / Re: "Floating" Track Window
« on: February 29, 2016, 06:18:43 pm »
While we're talking about keys and stuff, there's the issue of not being able to double click or open in any way an expression controller (outside of position, orientation, etc) after it's been created, in order to edit it.

68
Anim8or v0.98 Discussion Forum / Re: Feature Request Thread
« on: February 29, 2016, 03:47:41 am »
Double click the subdivision mesh, set working divisions to 0, then convert to mesh.

69
Anim8or v0.98 Discussion Forum / Re: Feature Request Thread
« on: February 29, 2016, 02:38:13 am »
Looks good to me. Thanks Steve!

70
Anim8or v0.98 Discussion Forum / Re: Feature Request Thread
« on: February 27, 2016, 02:26:42 am »
Hey Steve, sorry if I wasn't clear, it's the lines on the resultant subdivision mesh that would be better being gray and able to be disabled. In wireframe view, it shows the control mesh's lines black and the resultant subdivision mesh's lines gray, I think that gray color (or a few shades darker of the currently applied material?) should be applied to the resultant subdivision mesh's lines in all the views. I have no issues with any of the other aspects such as color, transparency or what-not of the control mesh.

It may be worth experimenting with culling out back-facing/hidden lines on the subdivision mesh, would make it a lot easier to read the resultant subdivision mesh especially if in wireframe view or with semi-transparent materials.

71
General Anim8or Forum / Re: Twitch Streaming
« on: February 25, 2016, 05:21:30 am »
Here's the modeling broadcast of the low poly platypus. Next will be the texturing, which I'll do sometime later.




72
General Anim8or Forum / Re: Twitch Streaming
« on: February 25, 2016, 02:28:00 am »
Alright, the 7:00 broadcast is finished. Using Inkscape, I created the concept for the model I'll be working on during the 11:00 broadcast. Below is the youtube archive, otherwise you can watch it in the twitch channel.



73
ASL Scripts / Re: Animated Textures Using Controller Scripts
« on: February 24, 2016, 09:28:35 pm »
Yeah, you can apply it to a huge body of water that has the water texture tiled, and assuming it's a seamless flowing animation, it'll look like the entire body is flowing in one direction.

74
General Anim8or Forum / Re: Twitch Streaming
« on: February 24, 2016, 06:52:32 pm »
The last session, there were one or two anonymous viewers (I couldn't tell if they were Anim8or users or just random bored Twitch viewers), so after 30 minutes of getting frustrated with various issues with subdivision modeling in Anim8or, I called it quits and deleted the broadcast. The issues were as follows:

  • Topo knife doesn't work on subdivision cage meshes when outline is disabled for that view.
  • Point picking/priority is hair-pullingly atrocious.
  • Random crashes
  • Broken mirrored modeling

Granted, I'm using the dev version so I can't really complain about the issues. I just won't do a full-blown tutorial or anything until the issues are resolved.

However, tonight I will once more begin a broadcast at 11:00pm Eastern (GTM - 5), 9 hours 15 minutes from this post. This time it won't be subdivision modeling, but rather a low poly game art creature. It'll make modeling a tiny bit more tolerable in Anim8or. If I don't rage quit while no one's watching, I'll archive the broadcast so that you guys can watch it if you miss it. The benefit of watching it live, of course, is that you can be there and chat with me as I'm doing it.

I will also do an earlier broadcast showing my Inkscape process when making character/creature concepts, at approximately 7pm Eastern.

http://twitch.tv/An8Hub

75
Anim8or v0.98 Discussion Forum / Re: Feature Request Thread
« on: February 24, 2016, 06:34:12 pm »
A small request: Can the color of outlined subdivision meshes (the outline of the catmull-clark mesh geometry) be changed to a medium gray, and an option to disable it in the Configure->UI dialog for the specific shading modes? The stark-black dense lines on top of the mesh I'm trying to work on get in the way of my modeling process when working with subdivision meshes, and the topo-knife tool doesn't work on subdivision mesh cages when outline is disabled.

Pages: 1 ... 3 4 [5] 6 7 ... 89