3D Canvas Community
3D Canvas Discussion Forums
Amabilis Announcements
3D Canvas 8.0 Progress (formerly 3D Canvas 7.2)
Topic Closed|
Go
![]() |
New
![]() |
Find
![]() |
Notify
![]() |
Tools
![]() |
|
Member |
I have one plug-in and a few operations working. That means I can start on a new area: applying operations to multiple objects/displaying layers etc.
Currently 3D Canvas does all the work to apply operations to multiple objects, via various means. It will continue to do that for operations that aren't designed to work on multiple objects. Eventually many operations will be redesigned to work on multiple objects, but initially, I think I will just get the "Weld" operations doing that. Maybe that is my next task. I'd like to do something "new" and take a break from the "fixing". |
|||
|
|
Member |
3D Canvas seems like itself again. It's possible to select objects, move them around, and apply operations. Nice to see.
There's still plenty to do. It seems like things are coming together, but despite it being only the fourth of the month, I still think 7.2 won't be ready until the end of the month. Next step: Applying operations to multiple objects. Hopefully I can finish that today or tomorrow. |
|||
|
|
Member |
I just removed the last traces of the old 3D Canvas selection functions. Finally. Glad to have that over with. I broke a few more things while doing it, but I think from now on there won't be anymore "breaking", just "fixing".
|
|||
|
|
Member |
Something new for plug-in and operation writers.
Today I'm working on a variation on CSGObject's existing "GetGeometry" method. What's different is that it provides not only the basic geometry, but also the materials, and will optionally triangulate, optionally get the smoothed/mirrored version, and optionally provide a copy that includes all clones. One of the nice things is that the information is provided in a more simple to access format than GetGeometry provides. Plus it gives access to the adjacency information for points, edges and faces. The returned information is provided via user defined types, not objects. This means you can make a copy of an object, change it, and have the original still. This is the main reason I'm writing it. |
|||
|
|
Member |
I should have mentioned that this function is particularly useful for writers of exporters because you can easily get a copy of a scene as it appears in 3D Canvas, including mirroring, smoothing and cloning.
|
|||
|
|
Member |
It took me a while, but I managed to finish the new "GetGeometry" function, and the corresponding "AddGeometry" function on Tuesday. I had to do a lot of performance testing, and tweeking. It's going to be used heavily in the future, so it has to be good.
Since then I've been doing a lot of "housekeeping" tasks. I am making it easier for myself to keep track of what is exactly what, by renaming various items so they match up with things. For example, when 3D Canvas was created I used "Meshes" and "MeshBuilders". These were the standards from the old Direct3D Retaind Mode. I started using "Object" as a replacement for "MeshBuilder" a while back, but there were many references to "meshes". Also, "Object" is a windows term. It's very confusing at times from a programming perspective to have "Objects". So, I have begun the transition to the word "Shape" to refer to a "Mesh". It is more descriptive, in my mind, and commonly used. For now, "Shape" replacing "Object/Mesh" is an internal thing, but eventually I will using "Shape" in the 3D Canvas user interface also. I also have the problem of confusion of "Vertex" and "Point". Direct3D uses Vertex to indicate a combination of Point Position, Normal, UV coordinate etc. I haven't quite decided how to use these. Probably I'll adopt something similar. Consistent usage/naming is helpful. |
|||
|
|
Member |
I'm really tempted to do a bit more cleanup. I think a couple more days would do wonders.
I have a pretty firm "latest date" possible for the release of 7.2. It's March 9th. I'm flying to Canada on the 10th and won't be available to any great extent for about three weeks. So, I have to be careful to not waste too much time on unncessary "nicities". |
|||
|
|
Member |
Maybe a "point" has three attributes: Position, Normal and UV(s). That would be consistent. A "vertex" would be reserved for the D3D ones.
The confusion right now comes from the fact that a 3D Canvas "Point" has three attributes: Point, Normal and UV(s). I'd really like to refer to things consistently to avoid confusion. This message has been edited. Last edited by: Amabilis Support, |
|||
|
Member![]() |
I'm really looking forward to 7.2 sounds like a lot of changes.
Also a lot of work to convert the plugins |
|||
|
|
Member |
Hopefully it will live up to your expectations.
I don't think it is so bad to upgrade plugins. It's mostly just search/replace. But, I guess we'll know soon enough. |
|||
|
|
Member |
I found a code sample to show why I get confused sometimes with "points":
If .PointList(.PointCount).Point = .PointList(0).Point Or blnVectorEqual3(mudtaGeometry(mlngcStandardShape).udtShape(0).PointList(.PointList(.PointCount).Point).Point, mudtaGeometry(mlngcStandardShape).udtShape(0).PointList(.PointList(0).Point).Point, gsngcSmallEpsilon) Then mudtaGeometry(mlngcStandardShape).udtShape(0).PointList(.PointList(.PointCount).Point).Point = mudtaGeometry(mlngcStandardShape).udtShape(0).PointList(.PointList(0).Point).Point .PointCount = .PointCount - 1 End If Anyone know what that means? |
|||
|
|
Member |
I did some work today to aid exporter writers.
I upgraded SortShapeByMaterial (Now GetSortedGeometry) to use the new GetGeometry function. That means you can now get geometry optionally sorted by material, optionally triangulated, optionally including clones, optionally including mirroring/smoothing. This message has been edited. Last edited by: Amabilis Support, |
|||
|
|
Member |
I finished up part of my code cleanup. I was planning to finish today, but I think I have one more day left.
Very slightly more understandable: If .PointList(.PointListCount).PointID = .PointList(0).PointID Or bVectorEqual3(mudtaGeometry(mlcStandardShape).udtShape(0).PointList(.PointList(.PointListCount).PointID).PointXYZ, mudtaGeometry(mlcStandardShape).udtShape(0).PointList(.PointList(0).PointID).PointXYZ, gscSmallEpsilon) Then mudtaGeometry(mlcStandardShape).udtShape(0).PointList(.PointList(.PointListCount).PointID).PointXYZ = mudtaGeometry(mlcStandardShape).udtShape(0).PointList(.PointList(0).PointID).PointXYZ .PointListCount = .PointListCount - 1 End If The difference is that now what I mention a point, I make it clear if it is an index (ID appended to the end) or an actual coordinate (XYZ appended to the end). I think it still needs work, but the example here is probably the worst case possible. |
|||
|
|
Member |
I actualy managed to finish something today. I have finished my updated file format, and the functions to convert the old format to the new.
This won't provide anything "new" for this release. I'm just tidying up, and laying the ground work for 8.0. I have some work to do on the data structures and the scripting/plug-in interfaces. After I get that done, I'll probably release another alpha version, so that plug-ins and scripts can be updated prior to the final release becoming available. |
|||
|
|
Member |
As I look at this 11 year old code, I keep thinking to myself "Gee... I wish I knew then what I know now".
|
|||
|
|
Member |
I just finished the updated Scripting and Plug-in interfaces.
I'm working on updating some plug-ins right now. Once I have a few working samples, I'll release a new alpha. |
|||
|
|
Member |
A new feature for plug-ins is there is now a standard way to validate that the user has selected something appropriate. This is set in the plug-in via parameters. You can still write your own validation by not returning any parameters.
Unlike operations, it will still be possible to select a plug-in if the selection is wrong. If it is wrong, the 3D Canvas will let the user know what is an appropriate selection. |
|||
|
|
Member |
Btw, when I created the validation, I used the newly exposed adjacency information. That made things so much simpler.
Here's an example (not sure how readable it is without indenting): With csShape 'get the adjacency to make this easier .GetInternalGeometryAndAdjacency cdtaPointList, lPointListCount, cdtaNormalList, lNormalListCount _ , cdtaTextureCoordinateList, lTextureCoordinateListCount, cdtaEdgeList, lEdgeListCount, cdtaFaceList, lFaceListCount 'get the selection .GetSelection cdtSelectionType, cdtSelection 'allocate space for the edge flags ReDim baEdgeInUse(lEdgeListCount - 1) 'flag each edge used For lEdge = 0 To cdtSelection.ActiveItemListCount - 1 baEdgeInUse(cdtaFaceList(cdtSelection.ActiveItemList(lEdge).Primary).EdgeListID(cdtSelection.ActiveItemList(lEdge).Sub)) = True Next lEdge 'count the number of unique (non-reversed) edges For lEdge = 0 To lEdgeListCount - 1 If baEdgeInUse(lEdge) Then plGetActualEdgeCount = plGetActualEdgeCount + 1 End If Next lEdge End With The sample code goes through the list of selected edges and determines how many unique edges there are. The new version of 3D Canvas selects both the selected edge and any other edges that share the same points. In this particular example I needed count the unique edges. How many the user actually sees. |
|||
|
|
Member |
I managed to get three plug-ins working. Nothing too exciting.
I posted Alpha 3 in the plug-ins/scripting forum. It's really only for those who write plug-ins. |
|||
|
|
Member |
Tody I've removed the GetRepresentativeEntityType and GetShapeType ("GetType", "GetSubType") methods from the Shape object. They aren't necessary anymore because the GetShape functions will only return modifiable shapes.
I also added the "GetxCustomFieldID" functions, that I had forgotten. |
|||
|
| Powered by Social Strata | Page 1 2 3 4 5 6 7 8 9 10 |
| Please Wait. Your request is being processed... |
Topic Closed
3D Canvas Community
3D Canvas Discussion Forums
Amabilis Announcements
3D Canvas 8.0 Progress (formerly 3D Canvas 7.2)
