Your browser does not seem to support JavaScript. As a result, your viewing experience will be diminished, and you have been placed in read-only mode.
Please download a browser that supports JavaScript, or enable it if it's disabled (i.e. NoScript).
Hello !
I wonder how can I do the same thing as the Make Preview do and auto save and show in Picture View ?
I think it is some steps :
ActiveRenderData
Viewport Renderer
The output maybe like a 1s mp4 file named 'cube.mp4' and saved to disk .
for step 1 and 2 I have some experences , but for 3 and 4 , I have no idea how to do it right . And I have read some post and python documents like RenderDocument() , but I don't know how it works with mp4 and how to set it . could you please provide a bare-bone code for this ?
Many thanks
Hi,
You can retrieve the render settings, update them and, use the command RenderDocument. In c++, the command ShowBitmap allow to display a file in the Picture viewver while in python you can only display bitmaps. The bitmap passed to the RenderDocument function is used as a dummy.
from typing import Optional import c4d doc: c4d.documents.BaseDocument # The active document op: Optional[c4d.BaseObject] # The active object, None if unselected def main() -> None: rd = doc.GetActiveRenderData() data = rd.GetData() # This bmp will server as a dummy bmp, the project being save below bmp = c4d.bitmaps.MultipassBitmap(int(rd[c4d.RDATA_XRES]), int(rd[c4d.RDATA_YRES]), c4d.COLORMODE_RGB) file = "D:\\temp\\toto_preview" # Define the render setting so the file will be saved on the harddrive. data.SetBool(c4d.RDATA_GLOBALSAVE, True); data.SetBool(c4d.RDATA_SAVEIMAGE, True); data.SetBool(c4d.RDATA_ALPHACHANNEL, False); data.SetInt32(c4d.RDATA_FORMATDEPTH, 0); # define the file Format to MP4 data.SetInt32(c4d.RDATA_FORMAT, 1125); data.SetFilename(c4d.RDATA_PATH, file); if bmp is None: raise RuntimeError("Failed to create the bitmap.") if c4d.documents.RenderDocument(doc, data, bmp, c4d.RENDERFLAGS_EXTERNAL | c4d.RENDERFLAGS_PREVIEWSETTINGS) != c4d.RENDERRESULT_OK: raise RuntimeError("Failed to render the temporary document.") if __name__ == '__main__': main()
Another way would be to use MovieSaver. The problem is that the container defined by the Choose function is only readable in c++.
This will probably block you to define the codec parameters.
Cheers, Manuel
@manuel Thanks for that reply .
It's a cleary example that I can move on , a derivative of the qustion is if I cann't use ShowBitmap to show media file in Picture viewer , maybe I can get a range like 5f - 25f and render it and show it in sequence in Picture viewer in a folder ? Is it a stupid way or a no-exectable way
ShowBitmap
Like this for fame in [ range of render ( 5f to 25f ) ] : 1. render it 2. show it
@manuel And a move on question with "preview" is can I set a parameter with plugin Make Preview , How can I set some settings for plugin like this and call it with this settings ?
Make Preview
Hi @Dunhou, Manuel being in vaccation I will take over your topic.
@dunhou said in How to render a animation preview ?:
maybe I can get a range like 5f - 25f and render it and show it in sequence in Picture viewer in a folder ?
Sadly it is not possible to create folder in the Picture Viewer via the API. As Manuel said the only way to have image sequence displayed is to have a movie to be loaded in the Picture Viewer. Which is not possible in Python cinse the ShowBitmap function accepting a Filename is not available in Python. But this is something in our radar and I will look to support ShowBitmap with a filename in Python as soon as possible.
For the second part of your question about how to iterate a range of frames look at basedocument_animate_r13.py example, you will need to edit line 45 with a call to c4d.documents.RenderDocument. But in any case you will not be able to see them animated in the Picture Viewer.
And a move on question with "preview" is can I set a parameter with plugin Make Preview , How can I set some settings for plugin like this and call it with this settings ?
When you call RenderDocument, the 2nd argument is the BaseContainer representing the c4d.documents.RenderData. This argument let you change the render setting as demonstrated in the render_current_frame_r12.py example. The class description of c4d.documents.RenderData enunerates the possible IDs and expected values to be defining in the render setting BaseContainer. So in your specif case this give us:
import c4d def main() -> None: # Retrieves a copy of the current documents render settings data = doc.GetActiveRenderData().GetClone().GetData() if data is None: raise RuntimeError("Failed to retrieve the clone of the active Render Settings.") # Define the render setting so the file will be saved on the harddrive. data.SetInt32(c4d.RDATA_FRAMESEQUENCE, c4d.RDATA_FRAMESEQUENCE_PREVIEWRANGE) # To define with manually specified frame rande this can be defined like so: # data.SetInt32(c4d.RDATA_FRAMESEQUENCE, c4d.RDATA_FRAMESEQUENCE_MANUAL) # data.SetInt32(c4d.RDATA_FRAMEFROM, c4d.BaseTime(5, doc.GetFps())) # data.SetInt32(c4d.RDATA_FRAMETO, c4d.BaseTime(25, doc.GetFps())) data.SetBool(c4d.RDATA_GLOBALSAVE, True); data.SetBool(c4d.RDATA_SAVEIMAGE, True); data.SetBool(c4d.RDATA_ALPHACHANNEL, False); data.SetInt32(c4d.RDATA_FORMATDEPTH, c4d.RDATA_FORMATDEPTH_8); # define the file Format to MP4 data.SetInt32(c4d.RDATA_FORMAT, 1125); file = r"/Users/m_adam/Desktop/temp_render" data.SetFilename(c4d.RDATA_PATH, file); # define the render resolution data.SetInt32(c4d.RDATA_XRES, 1280); data.SetInt32(c4d.RDATA_YRES, 720); # This bmp will server as a dummy bmp, the project being save below bmp = c4d.bitmaps.MultipassBitmap(int(data[c4d.RDATA_XRES]), int(data[c4d.RDATA_YRES]), c4d.COLORMODE_RGB) if bmp is None: raise RuntimeError("Failed to create the bitmap.") if c4d.documents.RenderDocument(doc, data, bmp, c4d.RENDERFLAGS_EXTERNAL | c4d.RENDERFLAGS_PREVIEWSETTINGS) != c4d.RENDERRESULT_OK: raise RuntimeError("Failed to render the temporary document.") if __name__ == '__main__': main()
Cheers, Maxime.
@m_adam Thanks for that explain .
For the 1st issue , that is ok , I could open mp4 file in the disk instead of show in Picture View tight now .
And the 2rd one , I am so stupid that didn't realize that make preview plugin is a warp for viewport render . Just wanna figure out how to set the dialog parameters .
But bt the way , animate example is a new one to me , thanks for piont out .
Cheers !
Hi @Dunhou you can't control the Make Preview plugin, you have to rewrite the function yourself with all the tips previously shared in this topic.