IfcOpenShell / IfcOpenShell

Open source IFC library and geometry engine
GNU Lesser General Public License v3.0
1.8k stars 715 forks source link

BlenderBIM: Documentation Request: Work Schedules and Linking to Resource Assignments #2016

Closed garylzimmer closed 2 years ago

garylzimmer commented 2 years ago

I'm trying to see how much of my workflow I can transition from Bentley Synchro to BlenderBIM. My biggest want is a way to take the model generated by the IFC import and link it to tasks from the imported P6 XML file. Right now, I'm able to import both okay, but I'm not sure how much is currently implemented for combining them.

Are there features implemented yet for assigning specific objects/elements from the model to resource groups which can then be assigned to specific tasks and have their materials and appearances linked to the timing of those tasks?

Ideally we could have a appearance profile section where there could be default materials and growth transition animations for installation, removal, and maintenance tasks types.

This is currently the best documentation of this area of BlenderBIM that I've been able to find. is there anything else?

Moult commented 2 years ago

There are features for assigning objects to tasks, so that you describe "task X constructs objects A, B, C". After assignment, you can also visualise this by creating an animation. The user doesn't get control over the animation style yet - these are hardcoded colours to represent construction, demolition, renovation, and logistical (move from point A to B) tasks. So to allow for user customised animations we'd need to build that feature.

You mention resource groups. We do support resources and assignment of resources to tasks. However, you would not (typically) assign a physical element like a wall to a resource. First, you'd assign the wall to the task, and the resource would be assigned to the task too. For example: "Task X builds wall", then "Task X uses resource Concrete" or "Task X uses resource Formworker labour".

Sorry, no documentation. Would you like to help?

garylzimmer commented 2 years ago

Sorry, no documentation. Would you like to help?

Do you have or know of free sample files for the IFC and XML/XERs that I could work with to produce such a thing?

Unfortunately, all of the files I have access to are for clients, which are typically confidential and huge in file size.

EDIT: Found some sample files, will do some testing and see if I can get better results...

Moult commented 2 years ago

Cool! So looking for specific actionables for this issue, is there anything in particular you're after?

garylzimmer commented 2 years ago

I would love any kind of info dump from you or anyone who has contributed to these features that might give me a good idea as to where to start for my usages and documentation. What is the expected workflow? What sections and buttons should I be familiar with? What are the current limitations in this area?

You've given me a good amount just in your first response, but if the information only lives in the programmers brains or demo videos, that's not very helpful for the end-user.

Moult commented 2 years ago

@garylzimmer sure, we'd love help on designing a standardised documentation / reference for all features, that we can slowly fill out over time. I'm thinking of something similar to the Blender documentation, which is a proven solution. Would you be interested in helping write this?

For 4D, it's very similar to how existing 4D apps work. In the properties panel, you'll find an IFC 4D/5D panel. Everything related to 4D and 5D is there. In general, you start with a work plan (which can contain schedules), create a calendar, then create a work schedule. Then in your schedule, you can create tasks and relationships between tasks. This is the same workflow for any planning app. After doing that, you'd typically press the gantt chart button to visualise it, and press the recalculate schedule button to perform critical path analysis.

But if you're importing from P6 you'd have your WBS already created and everything ready to go, so all you need to do is link the model to the tasks. When you click on a task in you work schedule, you will see below it the "ICOM" panel - for things like inputs, outputs, and resources. Imagine a task as a generic process which consumes inputs, uses resources, and produces outputs. So when you build a wall, that wall belongs in the "outputs" section. So select some walls that are part of the "build wall" tasks, and press the "add" button in the outputs column.

Current limitations: no schedule duplication yet. A common workflow is duplicating work schedules to compare against a baseline. You can't do this yet. No task type libraries for creating tasks from a task type (but then again, this doesn't exist in P6 either). Also, animation styles right now is hardcoded - so constructed elements will always be green, demolition always red. No drag drop of bars in the gantt chart. Date calculations are done using the day as the unit of time right now - this makes calcuations much more reliable than hours and minutes, but it means you cannot yet schedule things that take particular hours or minutes. This is fine for most construction scheduling. Note that hours/mins cause a lot of bugs in P6 too. Probably more limitations when you dig deeper but I won't know until you ask :)

garylzimmer commented 2 years ago

This is great stuff, thanks! I would be thrilled to help out on the documentation stuff! I am a huge fan of wikis in various forms!

That all said… Those limitations are really where I want to pry into because many of those areas are relevant to my workflow.

Ideally, I’d like to see something similar to what Synchro has with a whole panel for creations of animations types that can be applied to objects individually or as a group. Growth or dissolve actions based on vectors. Fade in and out. Custom colors and transparency. But I’ve also been eyeing up Fuzor recently and it’s 4D animation presets look very slick. It could be a nice goal to try and mimic things like their steel girders falling from the sky individually animation.

As far as scheduling, I’m personally not as interested in manipulation features since I think that would be best handled in a dedicated software for that rather than software originally intentioned for 3D modeling and animation.

However, I am VERY interested in features for combining animations with the scheduled tasks. Synchro just keeps a panel synched to the animation timeline which displays all tasks that are currently on going. Ideally, I would love to see a way to have callouts that pop up with leader lines attached to the objects that are related to.

What are your thoughts on this area of BlenderBIM?

On Sat, Feb 5, 2022 at 1:42 AM Dion Moult @.***> wrote:

@garylzimmer https://github.com/garylzimmer sure, we'd love help on designing a standardised documentation / reference for all features, that we can slowly fill out over time. I'm thinking of something similar to the Blender documentation, which is a proven solution. Would you be interested in helping write this?

For 4D, it's very similar to how existing 4D apps work. In the properties panel, you'll find an IFC 4D/5D panel. Everything related to 4D and 5D is there. In general, you start with a work plan (which can contain schedules), create a calendar, then create a work schedule. Then in your schedule, you can create tasks and relationships between tasks. This is the same workflow for any planning app. After doing that, you'd typically press the gantt chart button to visualise it, and press the recalculate schedule button to perform critical path analysis.

But if you're importing from P6 you'd have your WBS already created and everything ready to go, so all you need to do is link the model to the tasks. When you click on a task in you work schedule, you will see below it the "ICOM" panel - for things like inputs, outputs, and resources. Imagine a task as a generic process which consumes inputs, uses resources, and produces outputs. So when you build a wall, that wall belongs in the "outputs" section. So select some walls that are part of the "build wall" tasks, and press the "add" button in the outputs column.

Current limitations: no schedule duplication yet. A common workflow is duplicating work schedules to compare against a baseline. You can't do this yet. No task type libraries for creating tasks from a task type (but then again, this doesn't exist in P6 either). Also, animation styles right now is hardcoded - so constructed elements will always be green, demolition always red. No drag drop of bars in the gantt chart. Probably more limitations when you dig deeper but I won't know until you ask :)

— Reply to this email directly, view it on GitHub https://github.com/IfcOpenShell/IfcOpenShell/issues/2016#issuecomment-1030549201, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACSRAOWRSQPSPLCZAVHCZPLUZTBG5ANCNFSM5NP5IEGA . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

You are receiving this because you were mentioned.Message ID: @.***>

Moult commented 2 years ago

@garylzimmer cheers! In terms of docs, I'd like to copy https://docs.blender.org/manual/en/latest/ - but it needs a lot of planning work to figure out the categories and structure. I don't have that time right now. If you do and you enjoy it, please go ahead and just get started :) It could be as simple as writing text and making structure proposals.

In terms of animation, there are two parts to it - calculating the animation keyframes, and then applying an effect. The keyframe calculations are generic, so what you're after is customising the effects. Effects right now are hardcoded to simply transition between colours (construct green, demolition red, other e.g. renovation blue, and logistic / movement yellow) It won't be too much work to create custom animations and I designed it since the beginning to be agnostic of animation style - in fact you can export keyframes to be used in any other software too. I proposed this as part of a previous GSoC but the student didn't make the cut.

There are also some really nice scripts floating around which stagger keyframes (e.g. for marketing animations where you don't want things to appear all at once - a few keyframes variation between each beam falling into place looks awesome). I've used this heavily in the past.

Things we need:

Then, another feature you're after is a timeline generation. I've already coded a very simple date viewer which shows the current date. A bit of work for someone to come up with some nice visual designs for timelines, then we just have to turn them into code and a bit of math for start/finish coordinates.

Finally, you'd be after generic annotation templates. Things like floating labels that face the camera, polygonal zones with various effects, the usual stuff that we see on every single construction animation out there. For now we can keep this in Blender so this is no different to building any other Blender add-on. We'd need someone to prep a sample file, then convert those into Python templates.

I produced a lot of construction animations using homemade stuff for this in the past so it was only a matter of time before it made its way into the feature set, but with your help this could come sooner than later. Would you be up for a call to create some targets and divvy up the workload? What skillset do you have? Animation? Python?

garylzimmer commented 2 years ago

I split the idea of organizing a documentation push for BlenderBIM on this issue https://github.com/IfcOpenShell/IfcOpenShell/issues/2024

garylzimmer commented 2 years ago

Thanks @Moult for your details. I think we can close this issue for now. I left myself a bread crumb in the new main documentation issue thread to come back here later to turn this into documentation and guidance. As far as the animation template .blend files, I would have to back burner that until I first check out how the existing animation appearances work , but also I would need to up my blender animation skills to get some ideas together.